Why Vue 2 beats Angular 2 and React

We started a contest at my job to see which framework was the best. At first it was going to be Angular 2 vs React, but then a friend mentioned that people who used Vue wished they had known about it sooner and preferred it over React.

I built a small dynamic single page in a single app in Vue 2, Angular, and React and I measured things like learning time, difficulty, and boilerplate. The single page demonstrated the basic features you would use in a production quality app.

I tested Vue and at first was displeased at how there wasn’t as much community support around it. So I moved onto React. I’ll come back to that.

React

React was easy to learn. It took about 2 days to find my way around. The boiler plate was significantly less than Angular 1 and despite my initial disgust, was actually fun to write in. It’s Redux state management revolutionized my world and would make building future apps much more organized.

Angular 2

Angular 2 is a powerful framework but not my cup of tea and I prefer not to use it. It adds a lot of unnecessary work. Because it’s more object-oriented computer science backgrounds and the many people coming from languages such as Java, .NET, and C++ should find it welcoming. However I think in general the javascript community wants to move more towards functional programming, using object composition instead of classes. It’s a new paradigm but parts of it can offer less typing and simpler code.

The boiler plate is significant. To import a service you must first write the import statement, mention in in the providers array, list it in the constructor, and then attach it to “this” in the code. And finally use it. You may also have to include it in your bootstrap. If you want to pass in additional settings you have to create a special object. Besides help with unit tests, I don’t see the purpose of their dependency injection system. I thoroughly read Angular’s explanation on why they created it, but it seems like more hassle than it’s worth.

Angular 2 took me about a week to find my way around instead of React’s 2 days and I’m coming from a strong experience with Angular 1. It is a much heavier framework and I don’t see a significant benefit and lots of cons to typescript (for my example I did it without typescript but es6, not the es5 version).

However Angular 2 had something React didn’t. Directives. I needed those in my personal CMS project, meanbase, because they were the api users would build themes with.

Vue

I continued hearing great things about Vue and finally circled around to using Vue 2 again. This time I devoted myself towards always referring back to the original documentation to solve issues. The documentation was the best I’ve seen. Coming from an angular 1 background I felt comfortable with Vue in one afternoon. I began moving meanbase, a cms built with angular, to Vue. My app was so much faster in early tests. The boiler plate was less than Angular 2 and less than React. Vue also had directives which allowed my users to maintain their theme api.

Vue is more like Angular 1 than Angular 2 is (without Dependency Injection) and it’s faster than even React.

Vue 2 combines the best parts of React, and Angular 1 & 2. It took about a week of development to get around the gotcha’s in a product quality complex CMS. Comparing this to Angular, I’ve worked on enterprise production apps for almost 2 years and still haven’t figured out all the gotcha’s of Angular 1. Angular 1 took months to master. Vue 2 took a week. Keep in mind when I said Angular 2 took I week, I meant just the initial learning not mastery.

Conclusion

For any new web app, I will almost certainly recommend Vue 2 over React or Angular 2. Members of your team can learn and master it faster, the framework runs faster than the other two, the boiler plate is the least exhausting, and it provides the best capabilities of React and Angular 1 && 2.