Was bringen die Neuerungen im gefragtesten Webentwicklungs – Framework nach dem Ivy-Upgrade in Angular 9? Endlich mehr Metadaten.
Der Countdown für Angular 10 läuft. Angular 10 ist wahrscheinlich kleiner als frühere Versionen von Angular.
Ein offizielles Veröffentlichungsdatum für Angular 10 muss noch festgelegt werden. Angular 9.0 wurde am 6. Februar 2019 allgemein verfügbar, gefolgt von Angular 9.1 am 25. März 2019. Mit starker Verspätung ist es doch noch fertig geworden. Der neue Compiler von Angular, Ivy stellt dabei die revolutionärste Änderung in der Geschichte des Frameworks dar. Mit Ivy können Bundles nun um einiges kleiner erzeugt werden. Und es kommt noch besser. Es bietet auch großes Potenzial für die Zukunft von Angular. Wie genau es weiter geht, werden aber erst die Minor Releases von Angular 9 und schlussendlich Angular 10 zeigen.
Am 8. April erschienen bereits die zwei ersten Beta-Versionen der TypeScript-basierten Plattform. Am 15. April wurde die 3. Beta-Version nachgelegt und zeigt bereits Neues für Ngcc . Das Upgrade auf das von Google entwickelte Framework wird sich anscheinend eher auf das Ökosystem fokussieren, als auf Features.
Die neuen Features vom Angular 10 Upgrade
Angular 10 bringt einen Haufen von Bugfixes, vier Features und den ersten Breaking Change für v10 mit. Der Breaking Change ist im Router zu finden und ist für Webentwickler von Bedeutung, die eine eigene Router- oder Recognizer-Klasse implementiert haben. Eines der Besonderheiten der Update-Version ist die Hinzufügung von Dependency-Infos und ng-content-Selektoren zu den Metadaten. Diese angebotene Compilerfunktion wird weitere Metadaten gewähren, die für Tools wie den Angular-Language-Service von Nutzen sind. Dadurch wäre es möglich Vorschläge für in Bibliotheken definierte Anweisungen und Komponenten bereitzustellen.
Neue Compiler Features
Leistungsoptimierungen, die durch die Reduzierung der Größe des Entery-Points und einer Caching-Technik im Manifest realisiert werden, stellen einen weiteren Fortschritt dar. Das Zwischenspeichern von Dependencies soll im Einstiegspunkt des Manifests durchgeführt werden und von dort gelesen werden, anstatt jedes Mal aufs Neue berechnet zu werden. Die Neuerungen lassen den abwärtskompatiblen Compiler Ngcc (Angular Ivy-Kompatibilitäts-Compiler) schneller werden. Im Fall, dass der Entery-Point nicht verarbeitet werden musste, analysierte Ngcc zuvor die Dateien des Einstiegspunkts, um Dependencies zu berechnen. Dieser Prozess fiel für große node-Module sehr zeitintensiv aus. Für Ngcc sind in Angular 10 noch mehr Bugfixes dabei. Sollte ein Fehler auftreten, wird es besser erkannt. Zuvor kam es dabei oft zu Schwierigkeiten, was laut des Teams mit dem Handling von Async/Await-Promises zusammen gehangen wird.
Ein weiteres neues Feature für den Compiler ist, dass der Value Span von ExpressionBinding jetzt an ParsedProperty übertragen wird. Dies würde wiederum die Spanne an die Template-ASTs (sowohl VE als auch Ivy) weitergegeben, was ebenso für den Compiler gilt.
In Angular 10 wurde für den ServiceWorker ein Fix vorgenommen bezüglich des Auftretens der Situation, dass sich der ServiceWorker nicht registriert, wenn eine Aufgabe mit langer Laufzeit oder ein wiederkehrendes Zeitlimit vorliegt. Der UrlMatcher-Type ist nach der neuen Version auch in der Lage immer den Wert null auszugeben. Desweiteren wurden eine Reihe von Fehlerbehebungen vorgenommen, wie bspw. der Compiler, der undefinierte Ausdrücke im Phänomen des „Holey Array“, also einem Array, dessen Objekte nicht alle wirklich existieren, vermeidet. Wird ein nicht vorhandenes Symbol importiert vermeidet der Core in Angular 10 einen Migrationsfehler und umgeht Probleme wie den berüchtigten Terser-Inlining-Bug.
Angular 10 birgt vor allem auch Neuerungen, die nicht direkt im Code stattfinden. Wir werden uns wohl auf Verbesserungen an der API-Dokumentation freuen dürfen.