
Angular vs. React vs. Vue - bullfish
https://medium.com/unicorn-supplies/angular-vs-react-vs-vue-a-2017-comparison-c5c52d620176
======
wiradikusuma
I recently used both Angular 2 and React (the latter more recent) in some
small projects. While I enjoyed working with React, I think Angular is more
suited for me, a one-man startup.

A lot of decisions are already made and I just follow them. In React, every
time I need something not built-in (which is very often), I have to do some
research, and even after deciding one, I have this "what if I'm wrong" guilt
at the back of my head. Of course I can "be wrong" too by choosing Angular,
but at least I'm wrong for the whole stack :D

~~~
slackingoff2017
My biggest problem with Angular2 is how restrictive an obtuse the framework
can be at times. I've ranted about it in other comments so I'll save space and
just say that Angular makes easy things hard and difficult things nearly
impossible once you step off the dotted line.

Also the lack of a really solid UI library has caused many headaches. Material
isn't very configurable, PrimeNg is okay but somewhat buggy and poorly
documented.

~~~
wiradikusuma
have you looked at
[https://vmware.github.io/clarity/](https://vmware.github.io/clarity/)?

~~~
matrix
I have, but it has had datepicker as "shipping real soon now" for at least six
months. Not confidence inspiring.

Wouldn't it be nice if UI components (and just as importantly, their styling)
was decoupled from the JS framework they're implemented with. Some kind of
markup language perhaps...

------
thingerr
The post is wrong about React __changing __the BSD+Patent license. It hasn 't
changed and is still an issue, depending on who you ask.

[0]
[https://github.com/facebook/react/issues/10191#](https://github.com/facebook/react/issues/10191#)

[1]
[https://code.facebook.com/posts/112130496157735/explaining-r...](https://code.facebook.com/posts/112130496157735/explaining-
react-s-license/)

~~~
tuxracer
Preact [https://preactjs.com/](https://preactjs.com/) is a good purely MIT
licensed drop in replacement for React if licensing is an issue

~~~
elliotec
It claims to be a drop in replacement, but it isn't.

~~~
garfij
Can you expand on this at all? I've looked at it as a replacement and I
understand there are things like prop-types that are missing, but my
understanding is that there are other libraries you can can use in addition to
preact that give you 100% compatibility.

------
wcarron
I've been using vue since it's conceptions (well, nearly) and it's been a joy.
Initially, the templates provided the perfect path to migrate from angular
1.x. That, among other things, was the main reason I chose it over react.

Now, years later and having experience with JSX in Vue, state, and building
large apps, I finally checkout out React and discovered that they're pretty
much the exact same thing:

Define a component; add lifecycle hooks; add data and functions; render; done.

I think Vue's community is finally catching up and and it's exciting to see.
The only thing I find myself wanting is a vue-oriented testing solution. React
has Jest and I find myself sorely wanting a testing library/wrapper with good
documentation for vue. React certainly has an advantage in that regard.

The article put it well: Vue if you still enjoy writing HTML templates (which
I don't mind) or React if you prefer the JS orientation.

~~~
ibejoeb
I feel like it's 20 years ago and we're seeing the golden age of RAD again.
Doesn't it feel weird to anyone else that we spent so long on the web
reimplementing basic visual components with spaghetti code, as if desktop UI
software never existed? I suppose hindsight is 20/20.

Things are just now starting to feel maintainable and reproducible. I think
it's great.

~~~
pbreit
Except maybe the reason the web flourished is because it wasn't stuck in the
desktop paradigm?

~~~
ibejoeb
I don't think that's a fair history of the web, but that's not my point.

I am saying that the paradigm for creating a UI is not so different. I have a
component with a lifecycle, events, logic, and styling, and it can be
instantiated arbitrarily many times and behave predictably. That's pretty new
in web tech.

As a specific example: "For decades, developers were trying to separate UI
templates and inline Javascript logic, but with JSX, these are intermixed
again."

This is fantastic guidance for brochure sites, but did it ever really suit
application development? UI components certainly have intrinsic layout and
logic, and our unbundling of that, I think, came from overzealous adherence to
the "rules" of a different game.

------
okket
Ember is so good, it does not need comparisons any more :)

[https://medium.com/@alvincrespo/ember-your-best-
bet-b5cd7275...](https://medium.com/@alvincrespo/ember-your-best-
bet-b5cd7275dc84)

~~~
mudbutt
I would argue that it is by far the worst Framework one could possibly choose.

~~~
usaphp
Can you explain why?

~~~
virmundi
The just is FB added a clause that if you sue them and use their stuff, you
immediately lose the license. So they could counter sue for breach of
contract.

~~~
virmundi
Damn it, iPhone. This comment should be above as to why React has licensing
issues.

------
AbraKdabra
I'm just really glad Vue is now included in every "X vs Y" framework, or
"choosing a js framework", almost every article for the past two years have
only been for Angular or React.

~~~
stephenhuey
I think Vue is great but I wish Aurelia would show up in more of these
comparisons as well:

[http://aurelia.io](http://aurelia.io)

~~~
litzer
You have a number of comments that advertise this but never offer any reason
alongside it.

~~~
stephenhuey
I've been building for the web for 15 years, and Aurelia feels more natural to
me. Granted, my Angular projects were all in Angular 1 and it has since
undergone a massive rewrite, almost as if it's a different framework now. But
based on my extensive experience with web applications using Java, Ruby and
Node.js on the servers (sometimes Single Page Application frontends, sometimes
minimals JS with jQuery libraries, etc), Aurelia just felt more naturally web-
like. That doesn't mean Angular is not able to do the job, but it feels more
like using a heavier tool that doesn't belong.

Aurelia also feels easier to build with (less unnecessary boilerplate) and
more maintainable in the end. The community is small but has made immense
strides in a short amount of time. There is a company backing it, but a very
small one, not a giant one such as Google or Facebook (and those giant ones
make no guarantees, but the small one backing Aurelia has emphasized their
long-term commitment time and time again). They have an ever-increasing number
of community contributors and features have been added at a rapid pace. Since
I began a year and a half ago, UI toolkits have regularly added Aurelia
integrations. The CLI has improved by leaps and bounds.

You can find out more on their website and other blogs and articles around the
web, but you may find this helpful:

[https://stackoverflow.com/questions/41853743/angular-2-vs-
au...](https://stackoverflow.com/questions/41853743/angular-2-vs-aurelia-2017)

------
mudbutt
It drives me crazy when I hear things like Angular4+ is better for "Large
Ambitious Applications with large teams" when in reality Angular4 suffers from
the same slow down/performance problems as Angular 1.x.

[https://github.com/angular/angular/issues/14041](https://github.com/angular/angular/issues/14041)
[https://www.airpair.com/angularjs/posts/angularjs-
performanc...](https://www.airpair.com/angularjs/posts/angularjs-performance-
large-applications)

I mean it's like they ignored all of the lessons and knowledge the industry
has learned and produced a Framework that has issues built in! But I guess the
Framework was designed with consulting in mind.

~~~
slmyers
One obscure issue that ends with the comment "It's slow but I don't think it's
the crippling bug I first thought it was." hardly supports a claim that "
Angular4 suffers from the same slow down/performance problems as Angular 1.x."

------
hateful
"If you love TypeScript: Angular" I would add an "(or Vue)" to this. When I
first started out with Vue a month ago, there were some weird idiosyncrasies
with typescript (IMHO). But the latest updates to "vue-class-component" and
"vue-property-decorator" have fixed most of them.

tip: I believe they're still working on a good option in the current CLI
([https://github.com/vuejs/vue-cli/issues/263](https://github.com/vuejs/vue-
cli/issues/263)) but one of the templates linked in that post
([https://github.com/johnlindquist/vue-typescript-
simple](https://github.com/johnlindquist/vue-typescript-simple)) is almost
perfect (I had to make the following change that's in one of the reported
issues: [https://github.com/johnlindquist/vue-typescript-
simple/issue...](https://github.com/johnlindquist/vue-typescript-
simple/issues/2)).

~~~
yuskii
I would also add React to this as well. Having built 2 react/redux/typescript
apps, I can say that the TS ecosystem for react is quite excellent.

------
korm
React 16 (Fiber, release candidate) has pretty much the same performance as
Vue [https://rawgit.com/krausest/js-framework-
benchmark/master/we...](https://rawgit.com/krausest/js-framework-
benchmark/master/webdriver-ts-results/table.html)

Angular is close enough too.

------
jyunderwood
> If you work at Google: Angular

Doesn't Google actually prefer Polymer?

[https://www.polymer-project.org/](https://www.polymer-project.org/)

~~~
akmittal
I don't think Google prefer either, YouTube was recently migrated to Polymer,
They use Angular(Dart) from Adwords. almost all other projects use vanilla
JavaScript(with closure compiler)

~~~
lolive
As far as i understand, Polymer (and Web Components, in general) permits to
define custom HTML elements.

What kind of custom elements are in the (insanely unreadable) Youtube main
page?

~~~
nawitus
Did YouTube switch to Polymer yet? I think only the new design
([https://www.youtube.com/new](https://www.youtube.com/new)) uses it, and it's
not yet switched on by default?

~~~
Macha
Google do staged rollouts, I got the new YouTube design last week

------
tzs
In case the author reads the comments here, you've got a couple of annoying
botched links.

The link in paragraph two to an alleged previous article of yours on choosing
a tech stack gives a 404.

The link in paragraph three to an alleged blog post of yours on single vs
multi page apps is actually just a link to the present article.

------
tanguy_k
Instead of comparing GitHub stars, better check npm trends:
[https://npmcharts.com/compare/react,angular,@angular/core,vu...](https://npmcharts.com/compare/react,angular,@angular/core,vue)

AngularJS, Angular 2+, Vue.js... all have a somewhat similar approach. React
is more of a newer paradigm, it fixes most of the problems older stacks had in
a radically different way, yet elegant. This article fails to explain the
different paradigms.

Also please stop "Want to use TypeScript? Go with Angular!". React and its
ecosystem has the best TypeScript experience thanks to JSX. JSX being just
JavaScript, everything is checked by TypeScript like any regular JavaScript
piece of code. You cannot do that with HTML templates.

------
alexssung
I'm disappointed to see RiotJS not getting much attention lately. I've been
using it for a B2B SaaS application and it has been intuitive and elegant to
use, and easy to pick up for any Javascript developers.

I tried learning Angular but found it to be too monolithic, and I'm currently
using React Native to develop the mobile apps. If React Native is any
indicator of how React web works, I don't think it compares to RiotJS in terms
of developer happiness.. i.e. React has a tougher learning curve, the code is
less readable and not as concise, a lot of things feel unnecessary, whereas
RiotJS is significantly more lightweight, more intuitive, and faster to get
things working (from my experience)

~~~
pbreit
You should try Vue.

------
akilism
chooooo

[https://github.com/choojs/choo](https://github.com/choojs/choo)

------
l1ambda
All that matters is Angular and Vue are based on the outmoded logic-in-HTML
paradigm.

