Updates, Neuigkeiten und mehr rund um die nächste Angular-Version

Auf dem Weg zu Angular 5
Kommentare

Angular 5 wird die nächste Major-Version des beliebten Frameworks. Erscheinen soll sie im Oktober 2017; aktuell steht der dritte Release Candidate zum Testen zur Verfügung. Wir haben uns die neue Angular-Version einmal genauer angeschaut.

Im vergangenen Herbst hatte das Angular-Team den neuen Release-Plan angekündigt, der ein neues Major-Release von Angular rund alle sechs Monate vorsieht. Nachdem im März 2017 Angular 4 final erschienen ist, steht die nächste Version – Angular 5 – für Oktober in den Startlöchern. Geplant ist das finale Release für den 23. Oktober; nach acht Beta-Versionen werden nun wohl noch einige Release Candidates erscheinen, in denen viele der Neuerungen vorab zum Testen bereitstehen werden.

Angular 5.0: Letzte Testphase bringt Verbesserung der Performance & Bugfixes [Update vom 13.10.]

Wie nicht anders zu erwarten, wird die Anzahl der hinzugefügten Features in Richtung Ende eines Projektes immer geringer. So auch bei Angular 5, wo die offizielle Veröffentlichung nun in greifbare Nähe rückt. Hatte der erste Release Candidate (Angular 5.0.0-rc.0) noch ein paar neue Features an Bord, folgten in den jüngsten beiden RC-Versionen rc.1 und rc.2 lediglich Bugfixes und Verbesserungen der Performance.

Auch Angular 4.4.5, die aktuellste Version in Produktionsreife, bringt sogar ausschließlich eine Handvoll Bugfixes. Der Compiler instanziiert Eager Providers nun korrekt, die in Verbindung mit Injector.get genutzt werden. Dies löst zudem auch das Problem, dass sämtliche Instanzen von NgModule bei der Verwendung von TestBed.overrideProvider lazy werden. Im Kern von Angular verhalten sich übrigens dynamisches und Inline Code Checking gleich.

Achtung! Laut offizieller Roadmap für Angular 5 soll das Update am 23. Oktober erscheinen. Angular 4.4.5 wurde sogar ein paar Tage früher als erwartet veröffentlicht. Ob Angular 5 allerdings zum Stichtag erscheint, bleibt abzuwarten.

Angular 5.0.0-rc.1 / Angular 5.0.0-rc.2

Im Fokus der beiden Release Candidates für Angular 5 standen, wie oben bereits beschrieben, Bugfixes und Performance-Verbesserungen. Letztere betreffen fast ausschließlich den Compiler von Angular, der mit rc.1 standardmäßig keine Zusammenfassungen für jit mehr versendet. Für die inkrementelle Kompilierung werden ab sofort nur noch veränderte TypeScript-Dateien gesendet; erstellt werden allerdings nach wie vor alle generierten Dateien.

Der AST-Code des Animation-Pakets wurde für Angular 5.0.0-rc.2 so umgeschrieben, dass er auf Interfaces und nicht mehr auf Klassen setzt. Da Interfaces während der Laufzeit nicht persistent gemacht werden, können Klassen entfernt werden, was das Bundle animations-browser verkleinert und die allgemeine Performanz erhöht:

Vorher:

animations-browser.umd.js = 222kb
animations-browser.umd.min.js = 107kb

Nachher:

animations-browser.umd.js = 213kb
animations-browser.umd.min.js = 102kb

Alle Informationen zu den neuen Features, den gefixten Bugs und den Verbesserungen in Sachen Performanz gibt es wie immer auf GitHub.

Angular 5.0: Erster Release Candidate läutet Endspurt ein

Nach dem Sommerloch folgt die heiße Herbstphase: Zahlreiche neue Hauptversionen erschienen in den letzten Tagen, darunter Java 9, Java EE 8 und Spring 5. Angular 5 soll am 23. Oktober folgen, den ersten Release Candidate kann man sich bereits jetzt schon ansehen. Die Beta-Phase ist damit offiziell abgeschlossen, Angular 5.0.0-rc.0 bringt dementsprechend vorrangig Bugfixes. Dennoch gibt es auch einige wenige neue Features.

Die inzwischen erschienenen Versionen Angular 4.4.2, Angular 4.4.3 und Angular 4.4.4 hatten insgesamt gerade einmal sieben Fehlerbehebungen im Gepäck. Unter anderem wurden einige Probleme beim Packaging behoben und ein negativer Wert für Query-Limits wird jetzt unterstützt.

Angular 5.0.0-rc.0

Der erste Release Candidate von Angular 5 beinhaltet neben 34 Bugfixes und der Verbesserung der Performance auch fünf neue Features. Wie auch Angular 4.4.4 werden in Angular 5 nun negative Werte für Query-Limits unterstützt, ein API wurde dem Plattform-Server hinzugefügt, das den Status vom Server transferieren kann.

Neu ist auch das @angular/service-worker Package. Zwar existiert der Service Worker (SW) schon eine Weile, wurde aber von Grund auf neu geschrieben, um eine weitere Bandbreite an Anwendungen zu unterstützen. Die folgenden Entrypoints sind ab sofort enthalten:

  • @angular/service-worker: Eine Bibliothek, die Angular Client Apps erlaubt, mit dem Service Worker zu kommunizieren.
  • @angular/service-worker/gen: Eine Bibliothek für das Erstellen von ngsw.json-Dateien aus glob-bastierten SW-Konfigurationsdateien
  • @angular/service-worker/ngsw-worker.js: Das Service Worker Script selbst.
  • @angular/service-worker/ngsw-cli.js: Ein CLI-Tool für die Erstellung von ngsw.json-Dateien aus glob-bastierten SW-Konfigurationsdateien.

Der Compiler stand diesmal in Sachen Verbesserung der Performanz im Vordergrund. Um schneller kompilieren zu können, wird tsickle nur noch dann verwendet, wenn es nötig ist. Der Watch Mode sollte nun ebenfalls schneller laufen, das gleiche gilt für die Erstellung von ts.Program. Einen Breaking Change gab es ebenfalls: ngGetContentSelectors() wurde entfernt, stattdessen müssen Nutzer ab Angular 5 auf ComponentFactory.ngContentSelectors zurückgreifen.

Alle Informationen zu den neuen Features, den gefixten Bugs und den Verbesserungen in Sachen Performanz gibt es wie immer auf GitHub.

Angular 5.0: Die Beta-Phase ist eröffnet

Laut Release-Plan auf GitHub werden sowohl die Beta-Versionen von Angular 5 als auch die Release Candidates jeweils gemeinsam mit neuen Bug-Fix-Updates für die aktuelle Framework-Version im 4.x-Release-Zweig erscheinen. Los ging es demnach Mitte Juli mit der Veröffentlichung von Angular 4.3.1 und Angular 5.0.0-beta.0

Angular 5.0.0-beta.0/beta.1

Viele Experten sind sich einig: Angular ist nun an einem Punkt, an dem die nächsten Releases nicht mehr das Killer-Feature bringen, sondern die allgemeine Performanz und die Nutzbarkeit verbessern werden. Das heißt nicht, wie die Beta-Versionen bereits zeigen, dass nur noch Bugs gefixt werden. Es wird allerdings aller Voraussicht nach kein krasser Umbruch mehr stattfinden, wie das zwischen AngularJS 1.x und Angular 2 der Fall war.

Ein neues Feature ist etwa die Unterstützung des Lazy-Loadings von Angular-Modulen in AngularJS-Anwendungen hinein und im Bereich Animationen der Support von den Transition Aliases :increment und :decrement. Für schnelleres Rendering wird zudem in Angular 5 der native addEventListener verwendet. Auch die Umstellung auf die neueste Version von tsickle bringt eine Verbesserung der Performance. Das angular.io-Bundle ist nun 6 Kilobyte leichter, da abstrakte Class-Methods nicht mehr materialisiert werden. Achtung! Da tsickle die Nutzung der Type Annotations @private und @return ausdrücklich verbietet, wurde es nötig, diese zu entfernen.

Neben den neuen Features und Performance-Verbesserungen wurden auch erneut über zwanzig Bugs gefixt. Eine vollständige Liste aller Änderungen und Bugfixes gibt es wie immer im Changelog von Angular auf GitHub.

Write solid JavaScript Code with TypeScript

mit Thomas Claudius Huber (Trivadis Services AG)

Unlock the Power of JavaScript Decorators

mit Nir Kaufman (500Tech)

API Summit 2017

Moderne Web APIs mit Node.js – volle Power im Backend

mit Manuel Rauber (Thinktecture), Sven Kölpin (Open Knowledge)

API First mit Swagger & Co.

mit Thilo Frotscher (Freiberufler)

Angular 5.0.0-beta.2/beta.3 [Update vom 11.08.17]

Die Beta-Phase für Angular 5 geht in die zweite Runde. Gleich zwei neue Beta-Versionen wurden in den letzten zehn Tagen veröffentlicht. An Bord sind Bugfixes, neue Features, Performance-Verbesserungen und diesmal auch ein Breaking Change. Dass der Fokus bei Angular derzeit auf dem kommenden Major Release liegt, sieht man daran, dass für die aktuelle Version, Angular 4.3.3 lediglich ein Bug im Compiler gefixt wurde.

Die dritte Beta-Version von Angular 5 (5.0.0-beta.2) hat zwei neue Features ins Web-Framework eingeführt. Für die Aktivierung des Event-Trackings individueller Routes wurden die Klassen ChildActivationStart und ChildActivationEnd sowie ein Test für die Verifizierung der PreActivation-Phase des Routings hinzugefügt. Zudem ist es nun möglich, FormControlsFormGroups und FormArrays mit einem zweiten Parameter in Form eines Options-Objektes auszuzeichnen.

Seit der vierten Beta-Version wird in Angular StaticInjector anstatt ReflectiveInjector genutzt, letzterer wird in einem der kommenden Updates komplett entfernt werden. Wer die Funktionalität benötigt, wird dazu angehalten, stattdessen Injector.create zu nutzen. Das Ganze führt zu einem Breaking Change, denn platformXXXX() akzeptiert keine Provider mehr, die von Reflexionen abhängig sind. Achtung! Das gilt lediglich im Bereich der Platform Creation und für Provider des JIT-Compilers, nicht für @Component oder @NgModule.

Alle Informationen zu den neuen Features und den 14 gefixten Bugs findet man wie immer im Changelog von Angular auf GitHub.

Angular 5.0.0-beta.4 / Angular 5.0.0-beta.5 [Update vom 30.08.17]

Langsam aber sicher nähert sich Angular 5 der Vollendung. Die offizielle Roadmap für die neue Version des Frameworks sieht – wie eingangs erwähnt – eine Veröffentlichung am 18. September vor. Dieses Datum ist allerdings mit einiger Vorsicht zu betrachten, denn gerade wurde mit Angular 5.0.0-beta.5 eine nicht vorgesehene Betaversion veröffentlicht – laut Release Schedule sollte vergangenen Montag eigentlich bereits der zweite Release Candidate verfügbar sein.

Wie bereits in Angular 4.3.3 wurden in den Updates 4.3.4, 4.3.5 und 4.3.6 vorrangig Bugs gefixt, insgesamt 15 Fehler konnten vom Team behoben werden. Unter anderem wird nun der PWA-Test übersprungen, wenn man einen nicht öffentlichen Commit redeployt und der Compiler kompiliert sauber mit TypeScript 2.4, Letzteres gilt auch für Benchpress. Angular 4.3.5 brachte zudem ein Update für den Build Optimizer, was die Performance ein wenig anheben sollte und ab Version 4.3.6 kann man das neue leere Modul DeprecatedI18NPipesModule verwenden.

Die fünfte Betaversion von Angular 5 (beta.4) brachte vor etwa zwei Wochen bereits die Unterstützung von updateON für ngModelOptions und die Status-Methode für AbstractControlDirective. Die Möglichkeit, leere Text-Nodes aus kompilierten Templates zu entfernen, soll die Performanz steigern. Gleiches gilt für das Entfernen der Decorator DSL, für deren Verwendung Reflect benötigt wird.

Code Refactoring in Angular 5.0.0-beta.5

Für Angular 5.0.0-beta.5 gab es ein großes Code-Refactoring mit einer bedeutenden Änderung: Der Compiler wurde aus dem Kern Angulars herausgelöst. Das heißt, dass ab sofort weder @angular/compiler noch @angular/compiler-cli abhängig vom @angular/core sind. Einige Interfaces sind daher nun doppelt und @angular/platform-server ist nun zusätzlich von @angular/platform-browser-dynamic abhängig.

Das große Refactoring sorgte zudem für die Entfernung einiger veralteter Objekte und Direktiven. Dies wurde entfernt:

  • NgFor
  • NgTemplateOutlet#ngOutletContext
  • useDebug
  • ChangeDetectionRef (ein Parameter von DifferFactory#create
  • DebugNode#source
  • Testability#findBindings
  • TrackByFn
  • Verschiedene Parameter von ErrorHandler
  • NgProbeToken
  • PRIMITIVE
  • Verschiedene Optionen von initialNavigation
  • Verschiedene Properties von RouterOutlet

Neue Features

Im Bereich der Animationen funktioniert die Property @.disabled jetzt auch ohne Expressions und es gibt Fehlermeldungen, wenn ungültige CSS-Properties entdeckt werden. Die Direktive NgForm erhält mit ngFormOptions eine neue Input-Property. Mit dieser können Nutzer updateOn-Werte für alle Subkontrollen von Form einstellen, die nur dann nicht gelten, wenn für die Subkontrolle bereits explizit ein eigener updateOn-Wert in ngModelOptions eingestellt wurde.

Ab Angular 5 wird das Intl-API nicht mehr verwendet, was dem Zweck dient, den Browser-Support zu verbessern. Der Compiler erlaubt nun die Verwendung mehrerer exportAs-Namen, .ngsummary.json-Dateien sind portierbar und TypeScript wird ab sofort für das Auflösen von Ressourcenpfaden verwendet.

Breaking Changes

Wie oben erwähnt wird das Intl-API nicht mehr verwendet, da es zu zahlreichen Bugs und Unstimmigkeiten kam. Stattdessen werden nun Daten genutzt, die vom Unicode Common Locale Data Repository (CLDR) exportiert werden. Außerdem war es nötig die I18n-Pipes zu ändern, sodass an dieser Stelle einige Breaking Changes zu erwarten sind. Eine vollständige Liste mit Breaking Changes gibt es auf im Changelog.

Alle Informationen zu den neuen Features, den gefixten Bugs und den Verbesserungen in Sachen Performanz gibt es wie immer auf GitHub.

Angular 5.0.0.-beta.7: Neue Router-Events und TypeScript 2.4 [Update vom 18.09.17]

Aller Wahrscheinlichkeit nach wird Angular 5 am 23. Oktober erscheinen, das legt jedenfalls die vor vier Tagen aktualisierte Roadmap nahe. Die Betaphase hingegen geht mit Angular 5.0.0-beta.7 in die achte Runde und bringt einige Bugfixes, kleinere Feature-Erweiterungen und zwei Breaking Changes. Auch ein Code Refactoring ist erneut Teil der neuen Beta.

Unterdessen erschien auch die aktuelle Version 4.4.1, die ebenfalls einige Bugfixes und neue Features enthält. Der Compiler erlaubt ab sofort die Spezifizierung mehrerer exportAs-Namen für eine Direktive, die über Kommas getrennt innerhalb des Strings angegeben werden können. Nutzer können zudem ab Angular 4.4.1 leere Text-Nodes aus bereits kompilierten Templates entfernen. Da es Probleme mit der Veröffentlichung von Version 4.4.0 gab, sprang man lieber gleich auf die nächste.

Angular 5.0.0-beta.7

Erwartungsgemäß mager fällt die neueste Betaversion von Angular aus, gerade einmal drei neue Features wurden implementiert. Nimmt man allerdings alle acht Betas zusammen, kommt man auf 33 neue und verbesserte Features, was dann doch insgesamt wieder eine recht große Verbesserung der Funktionsvielfalt darstellt. Über 80 Bugs wurden bislang in der Betaphase gefixt, was ebenfalls eine nicht gerade geringe Anzahl an Schräubchen darstellt, an denen gedreht worden ist.

Die achte Beta von Angular 5 bringt neue Events auf den Router, ab sofort sind ActivationStart und ActivationEnd verfügbar. Zudem ersetzt ng-container die i18n-Kommentare, deren Verwaltung eine Menge Arbeit bedeutete. Im Bereich Platform-Server wurde ein Multi-RENDER_MODULE_HOOK-hinzugefügt. Dieser kann vom Statustransfermodul genutzt werden, um jedweden Serverstatus zu serialisieren, der zum Client transportiert werden muss. Das Ganze läuft exakt ab, bevor der aktuelle Plattformstatus zu einem String gerendert wird.

In Sachen Code Refactoring wurden die Eigenschaften von RouterOutlet endgültig entfernt und das Update auf TypeScript 2.4 wurde initiiert. Diese beiden Refactorings führen auch zu den Breaking Changes der aktuellen Betaversion: Der Angular Compiler benötigt ab Angular 5.0.0-beta.7 TypeScript 2.4.x und durch die Entfernung der RouterOutlet-Eigenschaften könnten bei manchen Nutzern Probleme auftreten – passen Sie also auf!

Alle Informationen zu den neuen Features, den gefixten Bugs und den Verbesserungen in Sachen Performanz gibt es wie immer auf GitHub.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -