I am thinking about maybe trying it out and hoping for the best this is the right one for me.
It’s fairly fully-featured, ie it gives you almost everything you need in one package. Compare to React, which is very bareboned, and has a very small surface area with a very small amount of things to learn, but often needs extra packages to do things.
This can be very helpful – for example routing and form stuff (which is what Angular was originally built for) is all built-in.
But this also means that it’s significantly more complex than the other two popular frameworks (React and Vue). It’s written in Typescript, which is excellent but is another level of complexity. And it relies on Observables for event handling, via RxJS, which, again, are excellent, but can be mind-bendingly confusing. And it has its own special module system (doesn’t use standard ES6 modules like React or Vue). It works and it works well, but it’s very much Enterprise-focussed: a single, large, powerful, complex framework that handles everything for frontend UI.
Very well structured and modular, I’m a big fan of it using RxJS for its HTTP data-flow and the component structure.
It’s what I use at work. It’s overkill for a small project. For a large project, it is extremely powerful and extremely complex.
So if I am struggling to adapt to React, will Angular be much more difficult?
I went straight to Angular (without learning React), so I can’t speak entirely from experience but I would suspect that Angular would be harder to learn as a beginner than React. There’s just… a whole lot more new-ness all at once.
If you are struggling with React I suggest Vue. It really helped me understand the use case for a framework. After I worked in Vue I tried React and it made more sense. @ArielLeslie I’m holding off on Angular until I have a much larger application to work on but do plan to use it for something in the future.
I find Vue to be somewhere in the middle between React and Angular as complexity goes. Vue gives you a lot of options for functionally observing state changes without needing anything like Redux (but it does have Vuex which also brings some interesting innovations).
Personally, I’d recommend learning to write pure functional components with React first, because it’s not only the much more elegant syntax than Angular or Vue, it also forms good functional programming habits. You can write functional idioms in Vue too, but even then it still tends to look stateful, and it can be hard to tell proper effects from unwanted side effects.
As I said, React has a very small surface area – once you understand how it works and how to use it at a basic level, there isn’t a whole lot more to it, the API is tiny. So there’s an initial difficulty but it stays fairly steady after that, the complexity generally comes from learning libraries (Redux being the obvious one that is difficult to grasp).
Angular may be easier to build very very simple things following a tutorial (as you get a lot out of the box), but after that very early stage the difficulty is likely to ramp up substantially for you as a beginner. Note that I think that if I came to Angular from a Java/C# background I’d probably be comfortable with it, but I’m not, I find it overengineered and overcomplex, so I’m biased.
As mentioned by @austinmoore1492, you may find Vue easier (or you may not). Any SPA framework/library is going to be hard though, because SPAs are complicated and are hard things to get right.
Also, Svelte, as another option, is probably the simplest framework (conceptually and code-wise), and is very nice to use, but if your interest is in putting something on a résumé, then it won’t be useful for that.
@DanCouper I may revisit Vue
I can attest to the fact that Angular is more friendly for someone with a background in Java/C# and/or someone with experience playing with other MVC architectures. It’s still a steep learning curve and even after working with it 40 hours a week for two years I can get pretty confused sometimes.
Honestly for me I think when I started learning React, the first time, I didn’t have a great understanding of JS. I could do the pretty basic stuff, like writing functions and if statements. I took some time to learn more about Vanilla JS and built some projects for work, which really helped me get an actual dev job. Once I came back to a framework, because I couldn’t comprehend React the first time, I tried something else, Vue. So maybe it was just the fact that I understood more about JS in the first place that made it easier.
It’s a totally mindfuck compared to react, but tool is tool, if your job requires angular then go for it.
I also would say that you will probably like Angular if you come from other structured frameworks.
For example, my first contacts with Angular were way more satisfying than with React because I come from a Ruby on Rails background, and the sense of structure and convention provided by Angular felt a lot better for me than React.
I mean, to make the same exact app in React you will end up having to learn axios instead of the httpclient, react router instead of Angular’s, Redux instead of ngrx and so on, the fact that they are not included with the library doesn’t mean you don’t need to learn them if you want to get the same kind of funcionality.
I’ll bring up one thing Angular focuses on significantly more than React and Vue.
One is Architecture. Angular provides a very opinionated approach to how you architect your app.
This has its advantages of given you a significant leg up when it comes to scaling, as a lot of choices are already made for you, such as dependency injection, Reactive programming, lazy loading, TypeScript and modularization. The downside of this is you more or less have no choice but to learn how to leverage these features, even if you don’t need most of these features, it turns into “fluff”.
I recommend knowing JS well for all of them, as if your struggling with any of them it might be a sign of missing some fundamental concepts each of the frameworks leverage. Angular leans on rxjs/reactive programming heavily, and uses TS. React has JSX and Functional programming (or “code golf” in some cases) which makes it difficult to understand for a beginner. Vue is known to be simpler than the other two, but I’m sure it also has its gotchas.
Neither of them are better than the other, they all have their own approaches to the same problems, with different answers.
If you’re serious about enterprise development spend time to learn angular. Myself and the senior tech lead at my company are currently going through the headache of a modified lamp stack with zend framework and some of the code from previous developers is terrible.
Yes there is a learning curve but I actually am spending more time learning angular than reactjs because of its opinionated nature.
The syntax may be an issue for vanilla is devs like myself but in the end it is syntax. As long as you understand the underlying pseudocode you can view in any language.
That and maxs udemy angular course is a god send
I would recommend learning Angular.
It’s structure makes it very easy to work in, easy to take over from someone else as all Angular builds are the same. The component driven layout is another big plus as the components comes separated from each other and all files neatly inside same package.
The community might not be as big as React or Vue, and that you often find the docs a few weeks (sometimes months) outdated, but the error messages are that great you quickly find the root cause of the problem.
I went from React to Angular, the hardest part was to write everything in Typescript, but that is just another syntax. Luckily I come from Java developing so I found the Typescript quite easy to cope with, although I a few times cursed and said “In React this would been easy to fix” and then a few hours later, it works in Angular too.
The biggest pluses are the architecture, Dependency Injection (this might cause problems for newcomers) and Reactive Programming and Typescript.
The biggest drawback is that you won’t work on the Virtual DOM but on the DOM Tree itself.
It will cause some drawbacks when it comes to rendering, but so far, I haven’t really been bothered about it yet.
If you’d go for Angular, search for Angular the complete course on Udemy. Max is a great teacher, and then find a nice webpage you’d like to try to rebuild with Angular. You’ll learn loads of nice features Angular brings.
- Typescript: by learning Angular you’re also learning new language
- Separation of concerns, aka MVC: You’ll be shown how to build apps the right way
- rxJS: You’'ll meet with (one of) the most powerful concept in programming
File Soup: prepare to use
- Separation of concerns, aka MVC: You’ll be shown
- rxJS: You’'ll meet with (one of) the most common reasons of memory leaking
I have done a small test site with Angular. Just a couple of pages and it was slooow. Ranked as 65% of 100%. Other example sites about 99% If you have any proof that even Google uses Angular, I should be interested to know.
Took me about 30 seconds to find https://www.madewithangular.com/categories/google/