I am well versed with React and have limited experience with Angular.
I reason I got to explore Angular, initially, was because of the following points, hammered around the internet in the myriad of "Angular Vs. React" articles.
1. Angular is a full framework, while React is just the front end library.
2. Eventually you will have to use state management libraries, Routing, etc in React. Angular provides it from the get go.
3. With React, you have an infinite number of choices of libraries for state, routing, etc. Hence, it can become confusing, while Angular is a full framework with preset libraries, and hence is more coherent.
However, In practicality, I experienced the following.
1. Angular is a full framework, implies, there is a lot more to learn. Now, don't get me wrong, when you complete on complex project in Angular and React, at the end of the project, if you count the hours of learning, it will probably be same for both. However, because React is paced out, it's easier to get started and make an MVP.
2. I absolutely hated the NgModule system in Angular. Maybe I am mistaken, but Angular purports to gather related code into Modules, which are not JS modules. The benefit touted is clean separation, better organization, easier to find code, etc. However, I found the Module system to be overly complicated and an additional cognitive overhead, to what is already a cognitive burden of developing in Typescript.
3. The infinite number of libraries, stack choices, etc argument for React does not actually hold much water.
(a) Redux / MobX are two libraries that are popular and complete enough to meet the requirements of 99% of the projects out there.
(b) React-Router is usually the router choice.
(c) Axios for REST communication.
Now, there are other libraries, which may be better. However, if you stick to the stack above, you have just as many tutorials, videos, articles, etc to help you with development.
For all these reasons, I found React to be a better alternative.
Note that the concepts behind these stacks is identical. The implementations are slightly different. However, if you are sound conceptually, these frameworks become a minuscule part of your app. Your focus would squarely be on app architecture than framework stuff.
If it's something that has quite a bit of complexity, then Vue and React will be close, though once you incorporate React's router and state management I think Vue wins soundly. Angular is a distant third.
In addition to having better 1st party coherence, Vue has fewer footguns than React.
However it's a different paradigm than HTML/PHP templates with some Jquery click handlers thrown in.
Angular team member here. I'm curious what's the source of your data that Angular is a distant third?
I understand there are a lot of data points to consider. In terms of usage, based on our metrics this is incorrect, but of course, that highly depends on your dataset that's why I'm curious.
Not a distant third in terms of usage, but how simple it is to use. I'd think Vue is probably the distant third in how much it's used, but it's impossible to truly know these things.
As for my judgement of modern Angular as complex, there's a few things I'd like to point out:
- separation of CSS, JS, and templating into separate files. This makes it harder for the mind to keep everything in place rather than just scrolling
- defining routes in a global file but also in modules.
- providers, services, modules, etc
To be fair, Angular is so much more than React and Vue, which just parse templates and add some features. I feel like I'm not spouting a hot take, I feel like it's earned. If Angular wants to seem more approachable, the team has a way to go.
How do you rate each platform’s ability to get someone up to speed?