Blog

„Eine Interessante Neuerung an Angular 10 ist, dass ECMAScript-5-Browser nicht mehr standardmäßig unterstützt werden“

20 Jul 2020

Jedes Jahr erscheinen zwei große neue Versionen von Angular. Das JavaScript-Framework steht also nicht still, sondern verändert sich immer wieder. Darüber haben wir mit Angular Camp Trainer Manfred Steyer gesprochen: Was ist neu in Angular 10, wie hat der neue Compiler das Framework verändert und wo kann Angular noch besser werden?

Hallo Manfred und danke, dass du dir die Zeit für dieses Interview genommen hast. Lass uns ein wenig über Angular 10, Ivy und die Zukunft von Angular reden. Fangen wir doch mit der neuen Version an: Angular 10 ist ein relativ kleines Major Release geworden. Woran liegt das?

Manfred Steyer: Das liegt in erster Linie daran, dass Angular 10 eigentlich eine Wartungsrelease ist. Nach der Einführung von Ivy wollte man mal intern aufräumen. Außerdem war dieses Mal auch weniger Zeit, weil das Angular-Team zwei Versionen jährlich liefern möchte und Version 9 verspätet war.

Ein bisschen was hat sich aber ja trotzdem getan. Was ist denn deiner Meinung nach die wichtigste Neuerung an Angular 10?

Steyer: Eine – auch aus symbolischen Gründen – interessante Neuerung ist, dass ECMAScript-5-Browser nicht mehr standardmäßig unterstützt werden. Das bedeutet, dass das CLI mit den generierten Standardeinstellungen nur mehr ECMAScript-2015+ Bundles erzeugt. Die sind kleiner und führen somit zu einer besseren Start-Performance. Auch der Build-Vorgang beschleunigt sich dadurch, weil die CLI nicht mehr zusätzlich ECMAScript-5-Bundles generieren muss.

Wer allerdings ECMAScript-5-Browser wie den Internet Explorer 11 unterstützen muss, muss das lediglich in der Konfigurationsdatei .browserslistrc angeben.

Diese Änderung ist insofern interessant, weil sie zeigt, worauf das Angular Team wert legt. Es geht ihnen darum, Best Practices über sinnvolle Standardeinstellungen voranzutreiben und auch das Thema Performance steht ganz oben auf der Liste der Architekturziele. Diese beiden Aspekte kann man bei verschiedenen Entscheidungen wahrnehmen und ich finde es gut, dass hier konsistent gehandelt wird. Außerdem zeigt diese Änderung, dass es langsam Zeit wird, sich vom Internet Explorer 11 zu lösen. Dank des neuen Edge-Browsers wird das immer einfacher.

Die fertige Fassung von Ivy ist jetzt bereits in der 2. Major-Version von Angular enthalten. Welche Praxiserfahrungen gibt es inzwischen mit dem neuen Compiler?

Steyer: In erster Linie merkt man nur, dass die Bundles kleiner werden. Gerade sehr kleine und sehr große Projekte profitieren davon am meisten. Daneben kann man die entryComponents nun weglassen und Komponenten per Lazy Loading laden (früher konnte man nur ganze Module Lazy laden).

Ansonsten merkt man wenig von Ivy, weil es sich noch nicht bis zum öffentlichen API von Angular durchschlägt. Das war ja das große Ziel von Angular 9: Die Einführung von Ivy sollte zu keinen Breaking Changes führen. Da Aufräumen im Fokus von Angular 10 stand, hat sich in Sachen öffentlichem API auch nichts getan. Ich habe da große Hoffnungen für Version 11 und danach, weil das Potential von Ivy doch groß ist und mit einigen Ideen im Hinterkopf konzipiert wurde.

Wie geht es denn jetzt weiter, wo Ivy da ist. Was ist das nächste große Feature, das für Angular geplant ist?

Steyer: Es liegt derzeit noch keine Roadmap vor. Ich gehe aber davon aus, dass die Weiterentwicklung, wie bisher, auch evolutionär sein wird. Typischerweise nutzt jede neue Angular- und CLI-Version auch die neuesten stabilen Versionen der Abhängigkeiten, wie TypeScript und webpack. Ich hoffe, dass es dann webpack 5 sein wird, weil es mit Module Federation eine sehr interessante Neuerung für Microfrontends und Plugin-Systeme mit sich bringt.

Außerdem wird es früher oder später eine Alternative zu zone.js geben müssen. Ivy ist darauf schon vorbereitet. Daneben hoffe ich, dass sich auch andere Möglichkeiten von Ivy bis zum öffentliche API durchschlagen werden.

Update: Seit dem 06.08 gibt es die neue Roadmap: https://angular.io/guide/roadmap

Wenn du einen Wunsch frei hättest, was würdest du dir für die künftige Entwicklung von Angular wünschen?

Steyer: Ich würde gerne über das öffentliche API jene Dinge, die Ivy bereits heute unter der Motorhaube kann, nutzen können. Dazu zählen Standalone-Komponenten, also Komponenten, die ohne Angular-Module auskommen, aber auch dynamische Komponenten und Komponenten höherer Ordnung. Auch ein (sinnvolles) Arbeiten ohne zone.js wäre interessant und könnte sich positiv auf die Performance auswirken. Daneben wäre es cool, wenn Angular Elements noch kleinere Web-Component-Bundles erzeugen würde. Ivy würde das prinzipiell erlauben, wie erste Experimente zeigen.

Vielen Dank für das Gespräch!

Die Fragen stellte Ann-Cathrin Klose.