Skip to content
loading...

Request for Post: Differences Between React, Angular, and Vue

twitter logo github logo ・1 min read  

This comment, left on one of my recent posts

""React is a library for building composable user interfaces. It encourages the creation of reusable UI components which present data that changes over time. It is not a complete application framework like angular, it is just a view layer. So it is not directly comparable to frameworks like angular.""

which quotes this Quora answer, suggests that React and Angular are very different things. Or that the functionality of React is a subset of the functionality of Angular. Can someone shed some light on the differences between these two, and some of the other big JavaScript frameworks / libraries, like Vue?

twitter logo DISCUSS (10)
markdown guide
 

I've only been working with these frameworks for about a year now, so take my opinion as you will...

As far as I know, your assumption is more-or-less right. I work with Angular at my day job, and it has EVERYTHING included. It is very opinionated, in the sense that you are expected to do everything the Angular way. It has it's own API for handling http requests, observables, it almost forces the use of TypeScript, and various other features. Basically, you never have to make a choice because Angular has made it for you, for better or for worse.

React, is the polar opposite. It is JUST a library for building UIs. Everything else you need, such as routing and state management, must be added. This gives the developer more choice and more control. Some hate this because you have to make lots of decisions on your own, others love it because of the freedom it gives you to use, or not to use - whatever you want. This also means that these packages aren't actively maintained by the core React team though so, unlike Angular, third party libraries are in charge of implementing new features from the core library.

Finally, there's Vue, my personal favorite. Vue seems to be halfway between the two. It offers tools like state management and routing from members of the core team, but also gives you the freedom to make all the other choices for yourself. I think this is just the appropriate amount of freedom for me.

Of course there are syntactic differences and other small things, but I think these are the points that separate the three in the end. They're really just all means to the same end though. (:

 
 

Actually Vue doesn’t have state management and routing built in. I think what you meant to say is that there are plugins available for those things, which is also the case for React.

 

I actually didn't say it was baked in lol I said it's provided by members of the core team. Which is NOT the case for React.

To build on this, it means that Vue router and VueX are likely to be updated alongside Vue as opposed to react router (or your plugin of choice) which is maintained by a third party

Guess that’s my fault for misunderstanding you then.

 

Here's a podcast that compares and contrasts the frameworks:

"In this episode Wes and Scott talk about VueJS - what it is, how it compares to other frontend frameworks, and how to get the most out of it."

syntax.fm/show/130/the-vuejs-show-...

 
 

In this article there is a fundamental difference showing how the pages are rendered in Angular, Vue and React.
codemag.com/Article/1903071/A-Vue-...

 

"The problem is that when you’re trying to do something small or starting with a prototype, the build step gets in the way. That’s one place where I think Vue can really help you get building for solution faster."

I've definitely been going through this with React!

Classic DEV Post from Feb 22

Games to teach programming to a 9-year-old?

My nephew is turning 9... any ideas for games to teach him programming?

Andrew (he/him) profile image
Got a Ph.D. looking for dark matter, but not finding any. Now I code full-time. Je parle un peu français. dogs > cats

Do you prefer sans serif over serif?

You can change your font preferences in the "misc" section of your settings. ❤️