What makes Angular so special?
Angular... the "superheroic" framework, as they call it. What's all the fuss about?
If you're totally new to front-end, congratulations. You've to learn a lot of JS, HTML and CSS before picking up Angular, but at least you don't have to unlearn anything.
If like me, you're an experienced front-end developer coming into Angular directly from some MV* framework, I've got bad news for you. The Model-View-Something stuff is history.. yet another victim of the ever-changing front-end landscape.
When Angular 1 ( that's the retronym I prefer for the original version: AngularJS) came out, it didn't really fit into any of the MVP, MVC or MVVM architectures. Yet, the incessant bickering among the community trying to pigeonhole it into one of these categories pissed off one of Angular's own developers so much that he wrote a blog post claiming that Angular was MVW, where the W stands for whatever.
Angular2, which is as different from Angular 1 as Superman is from Batman, distances itself from those paradigms even further. Angular now uses a fully fledged CBA: component-based architecture. You can read about it, but in a nutshell it means everything you see on a webpage is broken down to its logical constituent components, which are developed and maintained separately in your IDE. And which are rendered and updated separately on your browser. Basically, it makes your application modular, which is a huge advantage, IMO, especially in single-page applications.
Okay, so that's the first thing you need to wrap your head around.
If you're coming from React (which basically invented front-end CBA), or some other CBA framework that I don't know of, you're not out of the woods yet. Angular has done something that's as divisive as live-action DC movies. It's changed HTML.
Now, HTML was never perfect, but in its defense, it was designed for displaying simple, static webpages. Nobody could foresee the need for dynamic, responsive, crazy-complex websites that have pervaded the world wide web.
To handle these things used to be JavaScript's job. All other frameworks I've seen attempt to tame the wild JS, while leaving the HTML undisturbed like a sleeping infant. Not Angular. It appears they hated HTML so much that they've crossed it with with JS to create a hybrid monster that's foo bar
. (F***ed up beyond any recognition)
That's right. Angular requires you to actually write JavaScript (or at least something that looks awfully similar) in your HTML tags. On first look, the code looks grotesque. But you get used to it. If there's anything the X-Men have taught us, the mutants are superior.
If you survived that one-two punch. There's more.
Angular is gradually moving toward the FRP paradigm. It seems that the trusty old Object-oriented programming isn't as timeless as one would've thought.
You probably could do without it, but if your webpage contains anything more complicated than a heading, I suggest you get on-board with it. Angular will throw observables at you at every turn. At times, you might even be required to import RxJS.
I hope you're ready...