Angular is one of the most extended frontend frameworks. It features many advantages compared to others, sometimes those pro’s go against it. In order to be so user-friendly there’s no other option than limiting us somehow.
Within the Frontend Brigade we have discussed the pro’s and con’s of Angular. Firstly, we all love the two way data binding. Moreover if we can also have a much more expressive and extensible HTML thanks to the guidelines, we have a frontend framework winner.
With Angular the development speed is much faster since many out-of-the-box features are available and, besides, because there are many already-made things which only need to be “plugged” for it to work. We should bear in mind that the dependency and file size increases when transferred to the browser, of course.
Models (the ng-models) are controversial. Those who have used other frameworks prefer having something more structured with clear rules. Personally, I don’t have a clear stand here. Many times we try to compare different tools which were intended for completely different purposes.
Above all, what seems more relevant to me regarding Angular, and what makes me actually think it’s one of the best frontend frameworks around today, is its large community. It’s very easy to find help. It’s easy to google something and find many solutions for common problems. Communities are a big plus.
On the downside, we can mention several negative aspects. For instance, the learning curve, provided we want to do things properly, can become quite difficult. This takes us to a similar point: it’s very easy to work badly.
Despite HTML being more expressive, there’s a point in which it becomes illegible. And if we don’t structure well our project, another moment comes: when we don’t exactly know where the HTML shown on the browser came from.
Angular way has to be learned. If we have some work experience with other more permissive frameworks, we can feel hooked by Angular and forced to unlearn lots of concepts.
Generally, this tool offers less flexibility when developing. Some things are actually impossible to do. Besides, the ng-animate is not among the best and the router either, so you will have to resort to external libraries which enlarge the project size.
On another level, the injection of dependencies is quite odd. When you use, for instance require or the almighty browserify, having to deal with the system of injection of dependencies on Angular can be a pain. Also, if we want to use a system as require to manage the injection of dependencies, it is very complicated to combine that with this essence of this article.
The main reason to say NO to Angular is the change from 1.X to 2.X. Angular offers many good features. But, in the short term, will have to leave behind AngularJS (1.X), and afterwards, Angular (2.X). Additionally, our projects will remain with an old code, which will become very expensive to support and furthermore to update.
So, with all these data, what do you think? Angular YES or NO?