Recently I needed to take my front end development skills to the next level. Whenever I needed to build a web interface, it was simple enough to use Bootstrap and the jQuery that came packaged with it. This worked fine when the templates were being rendered server-side using templates like with Django, Flask, WordPress, etc.
I decided to take the time to learn Angular, React, and Vue.js enough to form an opinion and understand the benefits and drawbacks of each one. This is my comparison and conclusion. I chose Angular and I will explain why.
- Vue.js - https://vuejs.org/
- Angular - https://angular.io/
- React - https://reactjs.org/
For me, Angular is the preferred solution.
I like the all-in-one package. You don't have to use everything in the framework, but you know they are available, they work well and play well together, they are all tested together, and you can find help in the same place and they are all supported equally.
I don't want to try out every possible combination of libraries to eventually compose my own framework. I want a framework. Angular is that. It comes with the components, routing, shared state with services and dependency injection, form management, animation, HTTP, etc.
I have been using Angular for a fe wmonths and have not had to add a single dependency outside of the framework yet. Angular wins for the same reason I prefer Django over Flask for significant applications, it's a complete toolbox.
When it comes to finding other developers or getting help, it's much easier to find another Angular developer, than it is to find another developer who is familiar with hodgepodge of libraries from different providers wired together in a jerry-rigged framework.
What about Vue.js?
Vue.js for me comes in second place. It has less available than Angular, but it has the important things: routing and shared state. This is a very nice sweet spot because those pieces together make up a lightweight framework that sits right between Angular and React. With Vue, you still have to add your own HTTP library if it is needed.
I actually quite liked Vue, and I would like to use it on a significant application to get an even better idea of how it feels versus Angular.
Why not React?
I liked how opinionated Angular was and how it came with all the tools I needed in comparison to React leaving me wondering what combination would be the best long term. It is like Django vs Flask. It depends on what you want and I want the entire framework not just a single component of a framework.
But, React Native!
In the past React Native was a strong reason to choose React, because the knowledge would translate very efficiently to writing mobile apps with React Native.
I tried both React Native and NativeScript and personally I prefer NativeScript. I tried it with Angular, and it worked just like normal except the templates have different components, the same ones React Native uses.
Hopefully it goes without saying, but all three of these options are great choices. If you are a CTO or architect trying to make a decision, I would consider any one a safe decision, but my preference and recommendation is Angular. I encourage you to comment with your own thoughts and experience!