Angular vs React vs Ember vs Vue - JS framework comparison

Sat Dec 16 2017

Paul Shan

I still remember those days when JavaScript frameworks started raising their heads in the market and developers were struggling due to lesser amount of documentations and tutorials.
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

Parameter Angular React Ember Vue
Github Stars + Forks 37k+ 95k+ 22k+ 75k+
Component architecture Yes Yes Yes Yes
Binding Two way (default one) One way Two way One way
Baked by Google Facebook Community Community
Learning curve High Low & moderate Very high Moderate
Recommended Language Typescript JS, JSX JS, Handlebars JS, vue
Architecture flexibility No Yes No Yes
Separation of logic Good Good Awesome Good
Rendering speed Slow Fast Slow Fast
Most known architecture MVC Flux MVC Flux
Server side rendering Yes Yes Yes Yes
Cli Yes Not official Yes Yes
Mobile build Ionic React-Native Cordova Weex
Debugging tools Yes Yes Yes Yes
Testing Jasmine & karma Your choice Q-Unite Karma & Mocha, Jest
Data library No No Ember-Data No
Development speed (opinion) Normal Normal Fast Normal
Documentation Good Moderate Good Good
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.

Technical comparison

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.

Performance

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.

CLI

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.

Learning curve

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.

React: React is JavaScript. A simple library with few apis and a concept of data flow; that’s it. So if you know JavaScript and also have experience on any other framework; you can probably adapt React in a single day (not a pro though).

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.

Documentation

Angular: Good documentation; short and simple and to the point. Official docs are sufficient to continue your development on Angular. Apart from that the community of Angular is also huge, as angular JS is one of the oldest JavaScript frameworks. So lot of help can be fount from different forums and blogs.

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.

Organization support

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.

Community support

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.

language preference

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.

React: Though JSX seems like non-javascript, but if you exclude the html part in it, it’s quire normal JavaScript. You don’t need to learn new language; but yes JSX is the language for react.

Ember: Ember is on pure JavaScript. If you scaffold the project with the cli, then you can freely use ES6 and above. The templating is handlebars, which is logic-less template.

Vue: Vue’s case is also similar to react. Though the extension is .vue, but it’s more like the combination of JavaScript, html & css.

Mobile development

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.

Job market

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.

SHARE THIS ARTICLE

post-thumbnail
Today everyone knows the importance of a lightning-fast website and how the speed impacts the conversion rate of a business. Today, everyone wants the site to be a PWA so that the mobile users can have an app-like experience with the website because, for the majority of the merchants, the customers come through mobile devices.
Tue Apr 20 2021
post-thumbnail
Here we are going to see how you can manage backup and restore of Postgres database with docker.
Thu Sep 03 2020
post-thumbnail
Image sliders or carousels always have increased the UI attraction of websites and they are pretty useful for reflecting the major roles/products too. In case, I am having a website that sells tee-shirts,
Mon Apr 30 2018

About VoidCanvas

This blog was created out of hobby and talks mostly about technology, web development, JavaScript, NodeJS and related topics. Thank you for reading my blog.

Copyright 2022 - www.voidcanvas.com

Popular Articles

Authentication using Google's oAuth api with node.js

Thu Mar 10 2016

OAuth authentications are pretty popular now a days and another thing which is popular is JavaScript. This article shows how to plugin google’s oAuth api for authentication in your own node application.

CSS3 Loader Snippet Collection: (Part 2 - Squares)

Sat Mar 01 2014

This is a continuation of my CSS3 loader snippet collection series. I've provided spinning css3 animation loader in the part 1 of this series and here in part 2, I'm providing various square type loading