I'm new to these frameworks (I know some don't consider React a framework), I want to invest some time into learning one of these and thought I would ask my peers. Please comment also if you have anything helpful to mention. P.S. Excuse my naivety please...
So, the only real concern I've got is one of an expected design. I have worked with very few frameworks that actually go a bit backwards in term of design. For years every major webapp frameworks have separated the concerns of the Views and the ViewModel/Controller/Presenter/Whatever. Embedding markup IN the .js (as React does) feels shockingly wrong. I've personally leveraged many benefits of this common separation and losing it, or otherwise changing how it fundamentally separates code, gives me the willies. I have, however, NEVER written one line of reactjs code. So, that's a disclaimer right there.
Perhaps it's freeing. 3 years ago I would have cried similar things about nodejs and now I'm a fan. But, I'm also not really jumping at the chance to try react. I've learned Angular over the last few months and haven't been disappointed. There is fantastic community support, solid api's that are (in 1.x) pretty stable. Lots of components to solve common problems that are, very often, plug and play. With angular (and specifically meanjs) I'm able to create common web applications insanely easy. It still blows my mind how fast things can move when you're just JS the entire time.
I have not tried anything regarding Angular 2.
In the end, I don't think you're going to go wrong learning either. Learn it, get good at it, go back and look at the other. Understanding WHEN to leverage specific frameworks/libraries is dependent on a lot more things than just the framework itself. Both are hot right now. However, Angular has been hotter longer and has (imo) a better backer in Google (vs Facebook). That all goes a long way, in an area where we (webapp developers) like changing frameworks with the seasons. You've got more teams already invested in angular than you probably do with react (total wet-thumb guess there, btw), so I'd lean that way if you're looking for a job in it.
What's your team like? A team interested in a framework - maybe because they think it will very specifically fix an issue previously had with other frameworks - can be a powerful motivator. Are they already familiar with npm/nodejs? With react there are more 'moving parts'. Do they already know gulp/grunt/transpilers? Since you've got some code generation in there, knowing how to detect it and how to debug it will be harder if you don't know those technologies already. Since angular (1.x at least) is still native es5, the pipeline from code to app is simpler. Good if you're coming up to speed on some of these build technologies.
You can see a report of the trade-offs between these two and between any pair of comparable technologies here.
I prefer Polymer over React. It's based on the original web standards. Why should we reinvent the wheel if it is there, baked into browsers?
@jose Yes, React is very hot these days, but with Angular 2 coming, the landscape might change. But my view on all these as of today is : go for react 100%. Angular learning curve is super steep but is encouraging once u understand the nuances. Besides angular 2 is whole different from angular 1 and surprisingly very similar to react. So, while u wait for the angular 2 ( which might be bigger than react ) go for react .
Why not both? If time permits, learn both and make your own decision. That's my current plan.
React is hot these days! :) Currently, I am using the private beta version of new Devmag. It's build completely in React and it's awesome.
Someone from Devmag team would be perfect to answer this question on why they chose ReactJS completely.
Maikel D
To be honest, I'd say neither. Learn vanilla JavaScript first, then you can make an educated decision. Both React and Angular are frameworks and I remember once trying to learn a framework before learning the language - bad idea.
If you are a beginner, go ahead and learn JavaScript itself first. You'll find that no framework can compare to it in speed, which at the end of the day, is what the user will get. Frameworks may speed up your development, but it comes at a cost, especially on mobile devices.
That's my 2 cents.