There are a lots of web frameworks with different scopes (React, Angular, Polymer, etc.). So many that everyday when I wake up and surf a little, I find a thousand more.
Months ago I was learning Angular 2 but I stepped aside to learn React (by a friend's advice). Angular 2 is great, but it is in beta and I needed something for production.
Right now I am learning single states with React-Redux.
What do you think I should add to my to-learn-list for the next months?
Before you learn frameworks you need to learn Javascript Application Programming. This is the basic and then learn javascript design pattern. Once you are familiar with these things then only you can learn frameworks, they are nothing but concepts on which javascript code is written to make your work easier.
Stick with ReactJS - add React Native and Mobx. Investigate GraphQL.
I finished a project last year where we used Angular 1 as the SPA framework. It worked very well for us, but we were taken aback when we found out that Angular 2 was not backwards compatible with Angular 1. In hindsight I think Google made the correct decision, but I am not sure I would have chosen Angular as our front end framework if I had known that ahead of time.
I think your friend's recommendation to learn React was a good choice, but I would keep in mind that React is really meant to be used with another framework like Flux or Redux. You can even use it with Angular 2 or Aurelia. You might also want to take a look at Vue.js.
Rather than skipping on to a new framework, why not go a bit deeper with React? Learn more about writing tests with React, for example. Dig into the deployment side. Review your methodologies - are you writing small, pure functions? Is your display code done in a nice, modular way?
Alternatively - how far have you dived into ES6? It goes very well with React+Babel; and it's a relatively long-term skill.
Or learn something totally different. eg. If you've never done python or bash scripting, learn the basics of those. Get a feel for different ecosystems, communities, idioms and language syntax. Doesn't mean you have to put them in production, but it will broaden your programming experience.
Maybe think of it this way: would you learn anything seriously conceptually new by learning another client-side mvc framework in javascript? Or are you just learning more variations of the same thing you already know?
Please don't pressure yourself into learning all the things. Build stuff and consider using frameworks along the way. Also try to understand the ideas behind frameworks that are universal in software engineering.
A lot of stuff might as well be easily solved with some jQuery or vanilla JS. In such cases frameworks might even increase complexity, and unnecessary complexity is among the least wanted things in a software project.
Personally, I think you're on the right tracks with React.
But, agnostically speaking, you will probably have to test some of the frameworks you are interested in (1 or 2 days, maybe?) so you can get the feel of them. I don't think you need to "deep learn" everything to find out if you like it or not. If you build something small and it already feels awkward, maybe it's not right for you.
Stick with the one you fall in love with.
I could give you a lot of reasons to choose React. But why would you listen to me? You're better off testing them yourself (as long as you have the time). You should probably start with the ones with a bigger community, as they're big for a reason.
Definitely add to your learn-list:
As you can see there is a lot to do. These things never changes while frameworks come, change, go away every day. When you have strong core knowledge you will be able to learn any new tool or framework very fast and adapt to your needs and only when you really will need them but not sooner.
It is impossible to answer your direct question because you don't know what project you will have in the future. Business determines requirements, tools and frameworks and not vice versa.
At the end I would recommend learning small libraries.
Ok, so, given the information you've provided about your project it's impossible to suggest one framework over another. As you seem aware, there are hundreds of frameworks in the world and all either do the same thing or are only slight variants (give or take).
The only person that will be able to tell you which framework you require is you - after reading comparisons/reviews etc. Possibly not the best answer you were expecting but it is the most objective.
Personally, in our projects at work we use vuejs (basic website + dynamic product components.)
In my opinion, a framework should not be learned so you learned something new - for that purpose it is better to take a look at the concepts for a framework and how it works under the hood. If you don't use it, most of the stuff you learned will be for naught. It's better to use a project you work on, research possible frameworks which might fit and then decide on one of them. You will have real-life experience how well the framewok fits your expectations and how to work with it. In future projects, you might more easily be able to decide on a framework based on your experience with real projects.
If you need some advice for what to learn in the coming months no matter what, I would rather suggest taking a look at Polymer, as web components are a standard and you will have to learn it sooner or later anyway. You can even combine Polymer with React and other frameworks. You could start bundling widgets into external (web) components. That way you can gradually introduce web components to existing or new projects, if you really want to use them.
Take a look on Aurelia, but choose one with whom you feel comfortable.
Personaly I don't like React and Angular. They feel some sort of synthetical to me.
Enguerran
I craft softwares
I could suggest this answer by @mpjme https://www.youtube.com/watch?v=DFP6UDgVJtE