React, developed by Facebook, was initially released in 2013. Facebook uses React extensively in their products (Facebook, Instagram, and WhatsApp). The current stable version is React v17.0, released October 2020 with no new features but it's goal is primarily focused on making it easier to upgrade React itself. The React developer team calls this the 'stepping stone' release.
Vue, also known as Vue.js, is the youngest member of the group. It was developed by ex-Google employee Evan You in 2014. Over the last four years, Vue has seen a substantial shift in popularity, even though it doesn’t have the backing of a large company. The current stable version is 3.0, released in September 2020. Contributors for Vue are supported by Patreon.
Based on the newest 2020 survey Best of JS it includes over 23,700 humans surveyed in 137 countries. Fun Fact: Only 5.8% of the respondents are female. sigh.
As usual React and Vue lead the pack, but Svelte is quickly establishing itself as a very serious contender for the front-end trophy. The big winner was React for satisfaction, and usage. Vue did capture top billing for interest at 63%.
Before you use an open-source framework, make sure you go through its license. Interestingly, all three frameworks use the MIT license, which provides limited reuse restrictions, even in proprietary software. Make sure you know the implications of the license before using any framework or software.
|Angular||varies depends on the bundle size produced|
Although there are significant difference between the sizes of the frameworks, they are still small as compared to the average webpage size (about 2MB according to the most recent data).
Components are integral parts of all three frameworks. A component generally gets an input, and changes behavior based on it. The use of components makes it easy to reuse code.
React combines the UI and behavior of components. The same part of the code is also creating the UI elements and dictating it's behavior.
Vue the UI and behavior are part of the components and make it more intuitive. Vue is highly customizable, for example, combine the UI and behavior of components from within a script. Also kudos to superb functionality and integration.
What About Learning Curves?
Angular Steep Learning Curve. In order to become an Angular master you must learn TypeScript and MCV.
React is not a complete framework and advanced features require the use of third-party libraries. This makes the learning curve not so steep. You can set up React within an hour. Documentation is amazing, thorough and complete with a pretty great Getting Started guide.
Vue highly customizable so much easier to learn that Angular or React. Vue has an overlap with Angular and React for component functionality. Transitioning to Vue from Angular or React is an easy option. Beware! It allows poor code making it hard to debug and test.
Angular is the most mature of the frameworks, and is a complete package. The learning curve is steep, but is a good choice for large teams and developers who already use Typescript (which is making a comeback). Very restrictive and not much flexibility.
Each framework has it pros and cons and there's no absolute right choice. I encourage you do some research before deciding. That's what I am doing and also asking our DEV community. I reached out earlier this month to find out what's the real dev opinions that aren't swayed by corporate sponsorship or employment.
Shout out to Soumya Ranjan Naik who just took the choose your framework life partner (which I love). He offered these consideration for choosing:
Vue.js : young and simple and has most stars on GitHub among these brainchild of a person but is influenced by community.
React.js : Mature enough and the most popular one and child of a big company hence won't die soon also has most number of jobs.
Angular : Oldest one and very strict along with a very opinionated and mixed impressions among Developers also child of a big Company.
I hope this helps your 'framework life partner' journey. I look forward to your replies. Seriously, talk to me.