
Every “Angular 2 vs. React” article out there - Urigo
https://medium.com/@urigo/every-angular-2-vs-react-article-out-there-cfd4f557be9b#.9v1mtehak
======
projectramo
Sorry, but the very first comment in every single React vs Angular article is
always: “React is _not_ full MVC, it is just the View, wheras Angular is MVC
so you should not even compare the two.”

And then they compare the two.

~~~
rubber_duck
React isn't full MVC but there is a whole ecosystem out there tailored around
it and it winds up being full MVC in practice - but you have to do the legwork
of figuring out what to add in and how to glue it together.

I've said this before - my personal view on this is that if you would descirbe
your self as a JS developer you will probably like React more, and if you're
coming from a .NET/Java background Angular will be much more familiar.

Having used both and having experience with both functional/dynamic
programming with Clojure and enterprise/OOP/static programming with
WPF/Silverlight - I prefer Angular - I think the tooling and approach it
leverages fall in to a category that's prooven to scale with "enterprise
grade" developers.

I like the simplicity and purity of React architecture - using React wrappers
in ClojureScript like Reagent is very "satisfying" \- the entire
language/platform just "fits together" from immutable state management being
the core of the language to sexpression DSL being a natural thing for lisp. I
very much dislike their implementation and tooling like JSX and flow which has
0 community adoption compared to TS. I feel like their design is heavily
influenced by the problems of Facebook - for eg. shoehorning this kind of
things on to plain old JS is an ugly mess for the sake of being easy to
introduce in to existing code - crucial for a huge project like say FB -
completely irrelevant to a new project.

And the fact that you have to merge so much different libraries in the hell
that is JS ecosystem of build tools, duplicated libraries, constantly obsolete
tech, etc. ads a ton of overhead with very low practical value.

If I needed to migrate an existing JS project to a new framework gradually I
would not even consider Angular 2, but if starting a new project it would be
my go-to choice.

~~~
zxcvcxz
>I think the tooling and approach it leverages fall in to a category that's
prooven to scale with "enterprise grade" developers.

I think react is proven to scale too and it's being used by a lot more large
companies than Angular 2.

Just a few months ago I tried to do the hello world tutorial on the angular 2
web site. I tried to do the javascript version and I couldn't get it to work.
I then tried the type script version, still no luck. It wasn't until a while
later when I tried again and they had updated the tutorial that I was even
able to get hello world to run.

I've programmed some large web apps in angular 1 and while I never fully
understood the depths of angular 1 I was still able to leverage the parts of
Angular I needed to build fully functional apps.

Now coming from Angular 1 I feel like I'm in a somewhat new world. Then I
tried react. It was simple, it didn't require me to completely re-learn
everything I know about web dev. I wish I had tried react sooner. If it's good
enough for facebook and the hundreds of other big websites that use it, then
it's good enough for me.

~~~
rubber_duck
I put "enterprise grade" in quotes on purpose. React stack (not React alone)
being used successfully by a 9-5 Java or C# shop is not something I'd be
willing to bet on.

Sure it's simple as far as hello world apps go, but once you start adding
state management, routing, etc. you start seeing that it diverges from
conventional architecture approaches. Not saying that's necessarily bad but it
does not mesh well with enterprise development - I hope you understand what I
mean by this.

And tools that help ensure consistency/quality in that kind of environment
like TypeScript are very unsatisfying with React and various libraries, for
eg. look how tedious Immutable.js typed records are, and check out typings for
Redux related libs - bunch of any typed parameters and return values. Flux
basically has no support outside of React and it wouldn't even run on Windows
last time I checked.

So like I said - it depends on the context - if we're talking a bunch of JS
frontend devs I'd say go for React if it fits what you're trying to do. If
you're a .NET/Java shop Angular 2 is probably going to be a better fit,
patterns like DI, OOP, etc. are all at the core and it's a full stack
framework you just pick up and follow it's conventions/best practices/design
decisions - way less decisions than React and way better docs (for the stuff
not included in React I mean, React documentation is decent).

~~~
Roboprog
Enterprise? Beam me up, Scottie, there's no intelligent life here :-)

I have a pretty good idea of the -- "just following orders", OOP-factory
strongly typed except for all the XML and annotations, never heard of FP,
idempotent, immutable, nor higher order functions, etc -- kind of developer
that "Enterprise" probably implies.

(I understand these people know ways to get some stuff done, and just want to
go home, but holy cow it gives me a bad case of "COBOL fingers" and/or eye-
strain working on those code bases -- spend some time to learn how to shorten
things up, please)

~~~
rubber_duck
That's not fair :) But it's true a lot of people just don't give a shit and
will spend more effort avoiding learning than it would take to learn something
so you're forced to cater to lowest common denominator.

------
lanestp
You forgot to say how blatantly superior web code from (Google/Facebook) is to
(Facebook/Google). Because of some irrelevant metric!

------
piotrkubisa
After reading I think the author is probably tired of all articles with
clickbait title about these two frontend frameworks where readers may find a
lot of marketing gibberish.

Frankly, I must admit he is right. Since React is on the top of the
"requirements of the modern JS Developer" [1] the popularity of such articles
are really high and mostly there are the same repetitive informations. However
I really miss a Ember.js as example of successful story. Is it a a badly
designed framework? Or just there isn't any huge company behind it?
Personally, I would say it is powerful framework with modern features like
server-side rendering (fastboot), ES6-compliant, scaffold-friendly where Flux
architecture can be applied [2].

[1]: Based on StackOverflow Jobs (number of occurrences: react: 140, angular2:
1, angular: 220, ember: 38, elm: 3, jquery: 147), LinkedIn, RemoteOk offers
for frontend developers.

[2]: [https://emberway.io/ember-js-goodbye-mvc-
part-1-21777ecfd708](https://emberway.io/ember-js-goodbye-mvc-
part-1-21777ecfd708)

~~~
rk06
> However I really miss a Ember.js as example of successful story. >Is it a a
> badly designed framework? Or just there isn't any huge company behind it?

Ember has both. It is not mentioned the purpose of those articles is
advertisements, not enlightenment.

------
alixaxel
Angular 2 vs React? Pff.. Haven't you heard, now the cool kids are going with
Elm nowadays.

------
rk06
>Lots of outdated information about old versions of the frameworks.

I completely disagree. They always have very few and vague info which somehow
does not change with time. you know like, angular is slow but has lots of
tutorials. etc

------
traviswingo
If people spent as much time building as they do making sure they're using the
"hottest" new frameworks, we'd have a lot of cool shit.

~~~
bgun
What if what they're building is a hot new framework? Does that still count as
"cool shit"?

~~~
curried_haskell
I would categorize it as "hot shit".

~~~
finishingmove
Goes well with your name :)

------
securingsincity
something something..."Lot's of magic going on here" something something.

~~~
Roboprog
So, you'll be our "defense against the dark arts" teacher this year? :-)

------
globisdead
Might as well jump in here. I started with Angular 1 and am slowly migrating
into React while having looked at and played around with a lot of Angular 2's
beta releases. And when I say React I guess what I really mean is (React +
ReactDOM + Babel/JSX + Webpack + ES6 + Redux) My point being there is a lot of
tooling and setup and config you need to do before truly getting into building
something great or efficient with it. It seems Angular 2 is going this route
as well and they also throw in their special Angular ways of doing things.
Their documentation is good but the product right now seems a bit rushed to
compete with React and is sort of this weird middle-ground between the ease of
use that Angular 1 was and the dependencies/component break-up mess with
React. I went into React with a bunch of comments saying it's "simple" and
just the view and everything we've heard of already. Well React is "simple" in
the way that Arch Linux is the simplest Linux distro. And building the "just
the view" part somehow takes two or three times longer than it should compared
to building out the entire application using a full MVC or whatever pattern
you want (Granted this probably has to do with the complete architectural
design pattern shift more than anything else). With React you're encouraged to
adopt a sort of top-most level state management with Redux when designing it
but I suppose you don't have to do it that way. Maybe it's just the functional
reactive programming side of it that makes it so difficult to grasp at first.
I'm still sticking with it. I've spent a good chunk of time on it so far and
need to adopt it for a large-scale application and with React it does seem
like there's going to be a lot of work initially in the design + component
breakdown/layout phase before getting into the actual building but I'm just
hoping it pays off in the end. I'm keeping an eye on Angular 2 to see how it
matures but it does feel a bit limited in scope in a similar way that Angular
1 did in that you have to do things the Angular way and just hope you run into
someone who has the same problem or uploaded their sample code for you to look
at and adopt into your project or use one of the many popular UIs and addons
etc. React has a bunch of those too and it's probably more difficult to find a
good component since there's just so many of them out there at this point, but
the main takeaway from React is that it's pretty much pure Javascript and you
sort of build from scratch there. It's getting pretty frustrating now trying
to look up guides or tutorials for React since it's likely to be outdated if
they're not using Webpack or ECMA2015 or even ReactDOM since they separated it
in version 14 or something so all guides/tutorials prior to around November or
December 2015 is pretty much outdated and you're not getting best practices or
approaches there. There is no "Angular way" around here it's just a lot of
Javascript everywhere. Sorry for the large block of text.

~~~
rk06
I wish there was an edit button, like SO, on HackerNews.

------
return0
I wonder if the answer is "neither".

~~~
GnarlyWhale
Vanilla.js is the next big thing.

------
bricss
If you'd like to spend a lot of time and maybe money (project budget) choose
React.

