A quick comparison
|Github Stars + Forks||37k+||95k+||22k+||75k+|
|Binding||Two way (default one)||One way||Two way||One way|
|Learning curve||High||Low & moderate||Very high||Moderate|
|Recommended Language||Typescript||JS, JSX||JS, Handlebars||JS, vue|
|Separation of logic||Good||Good||Awesome||Good|
|Most known architecture||MVC||Flux||MVC||Flux|
|Server side rendering||Yes||Yes||Yes||Yes|
|Testing||Jasmine & karma||Your choice||Q-Unite||Karma & Mocha, Jest|
|Development speed (opinion)||Normal||Normal||Fast||Normal|
|Best attraction||Oldest framework||Virtual DOM||Principals first||Combination of Angular & React|
Honestly, this point doesn’t make much sense. Cause it’s no more those days when we used to compare features. Frameworks these days learn from each other and tries to adapt the good things from each other. So basically you will get almost all the features of one framework into another. But still there are some differences left. I would like to point them out here.
Angular: Bringing typescript is probably a good idea cause lot of new features comes into typescript way before than EcmaScript specs. This way your application will always have modern features.
React: I love react because of performance. The virtual dom was the killer feature and others (like vue) are trying to adapt that. But even the fastest framework sometimes become slow in some situations. But then react came up with react-fiber. With facebook being one of the most populated place in the internet, I’m sure react will keep coming up with new technologies like this.
Ember: Ember-data is a data library (not just for ember) which makes caching and querying super easy. It takes off all the headache of fetching, storing, retrieving and caching; all from the client side. Another great thing about ember is it forces you for the best practices. I recommend beginners ember, cause this way they will be familiar with better architectures.
Vue: Vue is a hybrid of angular and react. Angular is bulky and currently supports typescript majorly; whether react’s jsx thing is not suitable to all. Vue is the solution. Vue claim to be faster than any other in dom node manipulation.
Angular: Honestly speaking since version 2, there has been a huge performance issue with Angular. Now version 5 is released and things are improved, but still not good enough I would say. But as Angular is google baked, I’m sure very soon they’re gonna fix everything.
React: The concepts of keeping it a view library, virtual dom, one way binding makes it probably the fastest in the current market. There have been a lot of cases where in an angular or ember project, developers used react in a page where there was too many elements.
Ember: This elephant is a bit in the slower side; specially in rendering. The observe and change detection are way faster than angular; but the first render is super slow.
Vue: Vue shares many engineering concepts with React. Like virtual dom, reactive and composable components etc; which makes it equally fast as React. However vue claims to be more faster in dom element changes.
Code default architecture
Angular: The MVC framework has put enough effort with its cli to provide a predefined project architecture. Better way to get started; but it doesn’t give you a very architecturally distributed project setup.
React: React itself doesn’t have any architecture, however the community uses flux. You can check the differences of MVC and Flux if you’re not familiar already. Flux is definitely a better architecture than MVC, but setting up things is still a pain for beginners as react likes keeping itself completely non-opinionated and flexible.
Ember: One of the best distributor of logic I would say. Not only the project created by the cli is very rich, but also the combination with ember-data makes life more easy. Almost every single ember developer loves using the default architecture.
Vue: Very similar like Angular. You can distribute it further and structure it better. But bundling and all are well handled by it. But one of the big architectural problem with vue is, you can’t inherit components and forced to use mixins always.
Angular: Few days after the birth of Angular; they tried come up with angular-cli and since then it’s getting better day by day. Lot of the angular developers these days uses the angular-cli.
React: React doesn’t have an official cli; but the community uses this cli very much.
Ember: Ember launched cli long ago and it really has a very strong hold on this. The community started valuing the concept of cli after the success of ember-cli. Angular cli is also forked from ember cli.
Vue: The cli is not bad. Gives you power to setup the project using a template of your choice; i.e. webpack, pwa, browserify or some other thing. This approach of setting up project is great but doesn’t provide much to do further.
Angular: It’s a framework. So obviously there will be learning; cause you need to know where and how exactly to put your code. It has it’s own syntaxes for template handling, looping and many more. So learning curve is kinda big.
Ember: Ember is also a framework. So, like angular, there is a big learning curve. But as it follows
convention over configuration concept; knowing the convention properly will also take a huge time of yours. You will always find a very less amount of Ember ninjas.
Vue: Vue is easier than Angular I would say; may be few things extra from react. People having knowledge of Angular and React will grasp it super fast.
React: React is so flexible that people people use it the way the want. That’s why finding proper documentation can be a little hard. However in today’s era internet is so rich that you will find something of your need. The official doc of react library is a bit small and may not be best suited for a beginner.
Ember: Long back the documentation of ember was really poor; but over the time they have drastically changed it. Now I can see the official docs are well organized, in depth theoretical contents along with code snippets. However due to small community, not much resources will be found from blogs and forums. VoidCanvas is one of those few blogs to cover ember in a large extent.
Vue: Sufficient enough to work with. You don’t even have to check any tutorial if you already have experience with Angular etc; just the official guide is sufficient. The community also grew very fast in last few months to provide you with more tutorials.
Angular: It’s baked by the great Google. Well dedicated developers team, already being used different google projects in different versions.
React: Facebook first created it for itself then made open-source. As facebook is one of the most crowded application in a users perspective and requires a great performance; we can be assured that no react release will compromise with performance.
Ember: It’s not baked by any organization, but LinkedIn is completely on ember. Microsoft, Apple, Netflix and many other companies are using it now.
Vue: Again not baked by any organization. Currently the biggest consumer is Alibaba.
Angular: Angular says that you can develop the application using native JS as well, but trust me you can’t. It will increase unnecessary complications and you will end up doing that. So I would say TypeScript is the only language preference with Angular.
Angular: Community uses ionic framework to develop smartphone apps using angular.
React: React has a very strong hold in this domain. React-Native is a awesome way to develop mobile applications. None of the other framework are close to react in this.
Ember: Using cordova you can convert ember applications in mobile app.
Vue: Vue community seems not very sure what to use, but a lot of them are using weex.
Angular: Most angular jobs still seeks angular.js 1.X developers; cause many application didn’t upgrade to version 2 and above due to huge implementation effort. Angular 2 developers hunt is also there but not the way the market needed for 1.x a year or two ago.
React: A bull market I would say. Majority of the front-end jobs in stackoverflow or weworkremotely needs react. Definitely the first choice if you are reading this article to get a job.
Ember: Small community so small job opportunity. May be good as a freelance developer as development in ember is faster than others. RoR community often search for ember folks as they are architecturally similar.
Vue: Not as huge demand as react, but the growth it has shown in terms of github stars, I’m sure it will end up very much like react. Lot of new startups and products are choosing vue these days.