I work with PHP and Javascript for a while now, and I am up to date with most concepts that are out there. I was always driven by the idea that I should learn what I use when I use it. And I never used any of those frameworks up until now. I looked at them out of curiosity and then completely ignored them, because at work I use extjs from Sencha.
For me, it was more important to have a good understanding of core javascript than have some knowledge of different things I do not use but I could easily learn when the need comes. These days, people like to see popular names in your CV... I like React and Vue, but for some, Vue is a bit obscure. And then again, React is just a name out of many that should be there, but they are not... Is hard to judge if my time is well spent learning those things, as opposed to focusing on other topics, like architecture, DDD, maybe a new language... What do you think?
Learn React!
Out of all the libraries listed, React's API has by far the smallest surface area. With other frameworks / libraries, you will spend most of your time learning an API, but with React, you will spend most of your time gaining a deeper understanding of JavaScript.
Just to give a brieg example, to iterate over an array to create a list of items with React you use a built in JavaScript method and ES6 arrow function (see below psuedocode):
<ul>
{things.map((thing) => <li>{thing.whatever}</li>)}
</ul>
In Angular, you would need to use the Angular API's ng-repeat method, which will look something like...
<div ng-app ng-controller="MyCtrl">
<ul>
<li ng-repeat="(thing, whatever) in things">{{thing}}: {{whatever}}</li>
</ul>
</div>
React is not really all that hard to learn because of this, but the payoff for learning React is very high. You will be building better UI than you ever have. Angular 1, Ember, etc. will give you fish while React will teach you how to fish.
It is quite brilliant and I strongly recommend it as something to learn to improve your FE JavaScript skillset.
Hi Ovidiu, as your time permits I would recommend you learn as much as you can, even if you have no immediate plans to use these different frameworks. The reasons why you should do this are many but the top of the list would include: 1) continuing education is always a good idea; 2) great engineers tend to be found on these big projects and so learning from them can only improve your own coding; 3) you may be called on to use another project in the future and knowing the "ground floor" will greatly decrease your ramp-up time; and, 4) coding is much like writing in that as a general rule any good author will read more than s/he writes.
As for what's going on out there right now: Backbone is still being used on new projects and many older projects. (See Trello) It's not that difficult of a framework to grasp so I would start there if you've had no experiences with it. Learning the framework will also get you used to more advanced frontend methodologies.
Learn React. It's being used everywhere now, especially in enterprise level projects. It's super easy to grasp (you can learn the basics and begin coding within a day or two). Most of your time here will be spent on learning the hundreds of addons, mixins, and state-handling packages (like Redux).
Vue is a new framework and so not used widely (yet). It may or may not be picked up but it would be worth reading through the docs and learning the basics in case it does.
Angular 1 is dead so don't waste your time. Angular 2 is a monster (with Typescript) and will take the longest to pick up. It's also a mixed bag. A lot of companies are dumping it for React for this reason. Some others are picking it up because it does well at controlling logic across really large teams.
You can't go wrong with learning more even if you may not use a framework. Learning the underlying ifs/wheres/whys will teach you how to code better. :)
Update: I don't mean you shouldn't learn Angular 1 because, like many Backbond projects, there are a lot of Angular 1 projects our there as well. I mean I wouldn't seriously learn it to plan to develop with it.
You can start with Angular2 + TypeScript. It's a whole new level of JavaScripting
I wouldn't recommend going with Angular 1 as you will have to deal with lots of DSLs - Directives, Filters, $scope, $rootScope, Controllers and what not! That's the reason the folks at Google have completely rewritten it and the new framework is called Angular 2. If you want to go with Angular path, then you should start directly with 2.0.
Now React is also a tempting choice. The plus side is that :
You will deal with pure JS (and ES6) code - no DSLs. If you know JS, you can build React components.
You will get to work with Unidirectional Data flow concepts and Flux architecture. IMO, this going to be the architecture of future.
You can build universal JavaScript apps .
Huge community.
Easily pick up React Native and build mobile apps (probably reuse some components?).
and much more.
So, my vote goes to React and it looks good on your resume too!
I write php but at the moment i use a php framework called Laravel. After learning jQuery, I found Angular Js (Angular 1) very useful and works best with php especially my php framework (Laravel). I really felt in love with Angular Js. I highly recommend it to you.
I haven't tried React, but from what I can read it's very similar to Vue? I started with Angular but my projects always turned into a mess and it felt like a dependency hell to define my dependencies for core features and especially errors messages has been like reading yiddish to me. Vue on the other hand has very informative warnings and errors that points me directly to every mistake I make. I don't always know the solution first off, but I do know where to start debugging.
I just think Vue and with components are very powerful for scaling, reusability and delegating. I wouldn't use it too much for SEO pages though.
Hi Ovidiu, I share my personal experience. Less than 4 months ago, I was in your same situation, and at first, I started learning Angular 1. I found it very easy to learn, but when I started using it in more complex projects, it got always harder and my script were not as clear as I would. That's why I switched to React. In my opinion it's another world. It's far better and as the project grows, the code is still very simple to understand. At now, the are still a lot of things I have to learn about React, but I really feel like suggesting it to you. Expecially if you switch to Node JS as well, it gets extremely powerful. Hope it can help you in taking your decision!
I’m a software engineer working on the web, specializing in React & GraphQL. Avid functional programmer and aspiring data scientist
Well, here are my 2 cents: Learn as much as possible. Never stop learning! But be sure which order is the right one for you. What do you need t the moment? For your current project? What technology is good in terms of things you already know. As an example (looking at the libraries you ask about):
Now you might wonder, what interface framework I think is a good idea. Let me redirect you to https://www.polymer-project.org/1.0/ . Polymer is like using templates with HTML, JS and CSS. Packed together to a unit. Directly in HTML (at least that's the vision).
tl;dr: Go for React, Polymer and Backbone. You can use all three in one project, so you do not really have to decide for one or the other with those.