Angular ist eine etablierte Größe am Markt der Frontend-Frameworks. Fragt man jedoch jemanden, ob er Angular verwenden will, fällt die Antwort öfter negativ aus. Warum ist das so? Was macht Angular anders?
Das erste, dass mir einfällt, ist die Change Detection. Hier geht Angular den Weg von it just works. Es hat sich abgezeichnet dass Entwickler Kontrolle lieben. Optimierung. Nachvollziehbare Vorgänge. Die Change Detection in Angular ist großteils versteckt, was es Anfängern einfach macht. Angular checkt einfach alle Variablen und hört auf Trigger wie click und keydown um danach die Komponente neu zu rendern.
Für Anfänger ist das perfekt. Für Fortgeschrittene gibt es OnPush. Damit wird die Change Detection zumindest etwas nachvollziehbarer. Rerender passieren nun, wenn Änderung vom Parent kommen oder sich in der Komponente selbst etwas ändert. Bleibt also nur noch die Magic innerhalb der Komponente. Von einem klaren Flow wie React sind wir trotzdem weit entfernt.
Direkt abhängig von der Change Detection ist der Komponenten Livecycle. Initialisieren. Rendern. Rerendern. Ganz so einfach ist das in Angular aber nicht. Die Hooks sind hier weitaus weniger genau definiert wie in React z.b.
ngOnInit direkt nach dem Contructor und ngAfterViewInit nach dem initialen render. Irgendwie fühlt sich das Verwenden der Class Components mit ihren Lifecycle Hooks an wie React vor 5 Jahren. Das React Team hat den Trend zu Function Components erkannt und alles dahingehend ausgerichtet.
Damit lässt sich der Livecycle perfekt abbilden. Es gibt nichts anderes als eine Funktion, die von oben nach unten durchläuft. Das vermisse ich. Vermutlich geht es nicht nur mir so und vor allem Einsteiger sind mit der alten Architektur der Lifecycle Hooks überfordert.
Die steilste Lernkurve in Javascript. Angular setzt voll und ganz auf Observables mit rxjs. Wenn man sich damit angefreundet hat, ist rxjs einfach nur wunderbar. Bis zu diesem Zeitpunkt können Monate oder Jahre vergehen.
Einsteiger sind mit rxjs erstmal völlig überfordert. Warum nicht einfach Promises nehmen? Klar kann man seinen Weg drumherum finden, wird aber immer wieder damit zu kämpfen haben. Ich selbst habe meine Freude daran gefunden, jedoch war die Entscheidung all in on rxjs nicht die beste für die Popularität des Frameworks.
Angular fühlt sich unglaublich aufgeblasen an. Kein Wunder. Es bietet auch viel mehr als nur den View Layer wie React. Angular bringt eine ganze Library (rxjs) für Datenverarbeitung, einen Router, einen eigenen HTTP-Client und vieles mehr mit. Für die einen ein Segen, für andere Communitys der Horror.
Viele Entwickler sind es gewohnt, ihre Tools selbst auszusuchen. Redux oder mobx? Axios oder Super Agent? So baut sich jeder Frontendentwickler seinen eigenen Techstack, mit dem er am besten umgehen kann und die besten Erfahrungen gemacht hat. Angular nimmt uns diese Entscheidungen ab, was gut für Einsteiger ist, aber Umsteigern eher schwerfällt.
Als jemand, der zuvor hauptsächlich mit React gearbeitet hat, habe ich Angular relativ spät lieben gelernt. Genau die oben angeführten Punkte sind mir zu Beginn sauer aufgestoßen und haben mit React zurückwünschen lassen.
Je länger man mit Angular arbeitet, desto mehr lernt man diese Dinge zu schätzen. Es ist jede Minute wert, Angular zu lernen. Auch wenn es nicht trendy ist, gibt es eine unglaublich Anzahl bestehender Angular Apps, die Entwickler brauchen, denn sie wollen gewartet und erweitert werden. Teams, die viel mit Angular umgesetzt haben, werden das auch weiterhin tun. Lernt Angular. Der Merkt ist vorhanden.