Angular vs React vs Ember vs Vue - JS framework comparison
But today, a lot has been changed. Those frameworks have come along a long way since that day. Angular has been completely re-written, React got a popularity boost in the market, Ember got an awesome cli to force you more into the programming principals, and a new community of Vue.js, a hybrid of angular and react grew exponentially.
Plenty of tutorials are out there today, a number of blogs and vlogs. But the more the options, the more the confusion to choose one. And that’s exactly the problem lot of developers face these days.
Well, today in this article before going in depth, I would like to show some quick differences in the table below. Remember, here by angular I meant angular version 2 and above, react means not only the library but the react eco system, both ember and vue is also considered version 2 and above.
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|
I am trying to compare as many points as I can; however if I miss something which you wanted, kindly put that in the comment section so that I can update the article with that.
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: This is the oldest framework; thus the community is huge. Angular was one of the first who helped the JS framework concepts to grow. However after the failures in its version 2; it lost the popularity a lot. Hope angular will again become the master in this field.
React: React is probably having the largest share in the current JS community. You will find enormous amount of plugins, libraries, sdks and blogs out there in the internet for react.
Ember: Ember never had a big community; probably due to the immense learning curve and slow rendering. But lot of dedicated people are out there which helped to create ember observer with a lot of plugins. But still nowhere close to the giants.
Vue: The vue community grew exponentially in last few months. Though a big part is non-english speaking; but still a huge amount of contribution can be seen.
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.
Does these really matter?
Both no and yes. No, because all of them are stronger and you can literally create any application using any of them. They are constantly growing by adapting each others good points.
Yes, because it’s not always the only applications development. It’s about situations. For what do you need the application, how much time it can take, what kind of developers you have, how much depth in adapting new things and many more. I’ve just tried to raise few points which I considered in my life; but they are never sufficient to point your finger to one framework or to hail another like god. Life is all about change and adaptation.