Gib mir 5!

Auf dem Weg zu Angular 5: Neue Router-Events und TypeScript 2.4 nun Pflicht

Redaktion JAXenter

© Angular.io / Shutterstock Milan M

Wie angekündigt, setzt das Team von Angular die Entwicklung des Frameworks nach dem Schema der semantischen Versionierung fort. Angular 4.4.1, das vierte größere Release des Angular 4 Releasezyklus‘, brachte ein paar kleinere neue Features. Die Betaphase von Angular 5 neigt sich unterdessen langsam dem Ende zu: Acht Betaversionen wurden bislang veröffentlicht, die jüngste hatte erneut neue Features und einige Verbesserungen an Bord. Der Compiler benötigt nun etwa TypeScript 2.4 und der Router bekam neue Events.

Update vom 18. September 2017

Angular 5.0: Neue Router-Events und TypeScript 2.4

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.



Update vom 30. August 2017

Angular 5.0: Compiler ausgelagert, neue Features & großes Code Refactoring

Langsam aber sicher nähert sich Angular 5 der Vollendung. Die offizielle Roadmap für die neue Version des Frameworks sieht 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.

Angular 5.0.0-beta.4 / Angular 5.0.0-beta.5

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

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.



Update vom 10. August 2017

Angular 5.0: Beta-Phase – Teil 2

Die Beta-Phase für Angular 5 geht in die zweite Runde. Gleich zwei neue Betaversionen 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.

Angular 5.0.0-beta.2 / Angular 5.0.0 beta.3

Wie Experten (etwa Sebastian Springer) bereits in Interviews erwähnt haben, ist Angular nun an einem Punkt, wo 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.

Die dritte Betaversion 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, FormControls, FormGroups und FormArrays mit einem zweiten Parameter in Form eines Options-Objektes auszuzeichnen.

Seit der vierten Betaversion 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.



Update vom 31. Juli 2017

Angular 5.0: Die Beta-Phase ist eröffnet

Der 4.x-Releasezyklus von Angular neigt sich langsam aber sicher dem Ende zu. Vor zwei Wochen erschien Version 4.3 des beliebten Web-Frameworks, über das unser Autor Karsten Sitterberg in seiner Kolumne ausführlich berichtete. Nur fünf Tage später erschien bereits das erste Bugfix-Release, das zweite folgte am 26. Juli; insgesamt konnten zwanzig Fehler korrigiert werden. Gemeinsam mit den jeweiligen Bugfix-Versionen für Angular 4.3 wurden allerdings auch die ersten beiden Betaversionen von Angular 5 veröffentlicht.

Angular 5.0.0-beta.0 / Angular 5.0.0-beta.1

Wie Experten (etwa Sebastian Springer) bereits in Interviews erwähnt haben, ist Angular nun an einem Punkt, wo 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 Betaversionen 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.



Update vom 9. Juni 2017

Angular 4.2: Verbesserte Performanz und Animationen

Fünf Wochen nahm die Entwicklungszeit für Angular 4.2 seit der ersten Betaversion in Anspruch. Insgesamt wurden für das neueste Update für Angular 34 Bugs behoben und die Nutzer können sich über rund 20 neue Features freuen. Auch die Performanz im Bereich Animationen wurde im Zuge der Aktualisierung verbessert.

Wie Sebastian Springer uns im Interview auf der JAX 2017 verriet, geht es auch auf dem Weg zu Angular 5 gar nicht so sehr um das nächste „Killer Feature“, sondern eher um eine kontinuierliche Verbesserung der vorliegenden Funktionalität.

In Sachen Funktionalität sind ganz eindeutig die neuen Animations-Features hervorzuheben – um diese zu implementieren wurden 55 Dateien im Animationspackage von Angular bearbeitet. Außerdem wurde die Unterstützung für routbare Animationen eingeführt und die Größe des Animationen-Bundles verringert. Letzteres sorgt dabei unter anderem für eine insgesamt bessere Performance.

Ebenfalls positiv auf die Performanz wirkt sich aus, dass ab sofort nicht jedes Mal, wenn ein Knotenpunkt (Node) entfernt wird, ein Closure erstellt wird. Das Gleiche gilt für die :leave-Flags, die nur dann Anwendung finden, wenn Animationen gestartet werden sollen.

Eine vollständige Liste aller Änderungen und Bugfixes gibt es wie immer im Changelog von Angular auf GitHub.



Update vom 27. April 2017

Angular 4.1 bringt verbesserten TypeScript Support

Bereits Ende März wurde, gemeinsam mit Angular 4.0.1, die erste Testversion von Angular 4.1 veröffentlicht. Drei Bugfix-Updates, zwei Betaversionen, einen Release Candidate später erschien schließlich mit Angular 4.1 das finale und erste größere Update zu Angular 4. Das Minor Release diente in erster Linie den Bugfixes, rund 100 wurden zwischen dem Release von 4.0 und 4.1 geschlossen, aber auch einige neue Features hat die aktualisierte Version im Gepäck.

Was neue Features angeht, so werden sich vor allem Entwickler aus dem TypeScript-Umfeld freuen: Angular 4.1 bringt den vollständigen Support für TypeScript 2.2 und 2.3. Wer noch TypeScript 2.1 verwendet muss sich allerdings nicht fürchten, denn der mit Angular 4 eingeführte Support ist weiterhin garantiert. Angular 4.1 ist ab sofort zudem mit den StrictNullChecks von TypeScript kompatibel, Entwickler können sie also für ihre Projekte aktivieren.

Die Performanz von Angular wurde bereits in Version 4.0.1, die vollständig in Angular 4.1 übernommen wurde, verbessert. Der Router erstellt nun nicht mehr jedes Mal einen neuen Serializer, wenn UrlTree.toString aufgerufen wird. Der Compiler hingegen unterstützt in Angular 4.1 auch ICU-Nachrichten in XLIFF.

Eine vollständige Liste aller Änderungen gibt es wie immer im Changelog von Angular auf GitHub, die offizielle Ankündigung zum Update findet man auf dem Blog.



Original-Artikel erschienen am 12. April 2017 von Autorin Gabriela Motroc:

Auf dem Weg zu Angular 5: Einfacher, kleiner, schneller, smoother

Igor Minar, Leiter des Angular-Projekts bei Google, und Steven Fluin, Developer Advocate im Angular-Team, haben in einer Keynote erste Details zu Angular 5 verraten. Angular soll einfacher, schneller und kleiner werden. Außerdem sollen Updates reibungsloser möglich sein und der Langzeit-Support greift.

Nun da Angular 4 endlich veröffentlicht ist, ist es Zeit sich über die nächste Version Gedanken zu machen. Spaß beiseite. Es ist klar, dass Angular erwachsen geworden ist. Angular-Teamleiter Igor Minar verkündete in einer Keynote auf der ng-conf 2017 stolz, dass das Wachstum von Angular von Menschen angetrieben wird, die von AngularJS auf Angular wechseln.

Erwachsensein bringt aber auch Verantwortung mit sich. Viele Anwender befürchten bei Major-Versionen Breaking Changes. Deswegen nimmt sich das Angular-Team für diese viel Zeit. So kommt es auch zu der ausgedehnten RC-Periode, in der das Team Feedback sammelt, wie Minar erklärte: „Wir wollen sicherstellen, dass es für euch sehr einfach ist zu upgraden. Deswegen machen wir viel, um sicherzustellen das Major-Versionen keine großen Hindernisse bedeuten.“

Angular im Videotutoriallogo-entwickler tutorials

Im entwickler.tutorial Angular – eine Einführung bereitet Sie Manfred Steyer auf die Entwicklung mit dem Angular Framework vor. Steyer zeigt anhand eines praxisnahen Beispiels, wie man Services und Dependency Injection integriert, Pipes zur Formatierung von Ausgaben nutzt, Komponenten mit Bindings verwendet und professionell mit dem Angular CLI umgeht.

 
Jetzt anmelden: Sparen Sie bis zum 27. April bis zu 47,5%.

Angular 5: Der Countdown hat begonnen

Wir wissen noch nicht viel über die nächste Version, aber wir wissen, dass sie im Oktober 2017 veröffentlicht wird. „Version 5 wird ein viel besseres Angular sein. Man wird in der Lage sein, seine Vorteile viel einfacher zu nutzen“, stellte Minar in Aussicht.

Angular 5 erscheint im Oktober 2017 (Quelle: https://github.com/angular/angular/blob/master/docs/RELEASE_SCHEDULE.md)

Einer der größten Vorteile von Angular 4 ist, dass es kleiner und schneller ist. Änderungen wurden vor allem unter der Haube vorgenommen, um den AOT generierten Code zu optimieren. Das Ziel war es, die Größe des generierten Codes für Komponenten in den meisten Fällen um bis zu 60 Prozent zu verkleinern.

Angular 5 will das noch besser machen. Minar versprach, dass es schneller und noch kleiner sein wird als Angular 4. Die Updates sollen reibungslos verlaufen und es soll einfacher werden Angular-Anwendungen zu kompilieren. Da die Unterschiede zwischen Just-in-Time- und Ahead-of-Time-Kompilierung Anwender oft frustrieren, wird AOT der neue Standard, um dieses Problem zu beseitigen.

Langzeit-Support für Angular

Minar eröffnete, dass Google-Anwendungen die neuste Pre-Release-Version von Angular nutze und dass sein Team mit der Stabilität von Angular zufrieden sei. Es gibt natürlich immer gute Gründe die neuste Minor-Version zu nutzen. Für diejenigen, die diese Option nicht haben, ist der Langzeit-Support (Long-Tem Support, kurz LTS) die Antwort.  Die Version 4 ist die erste, die LTS bekommt. Für die nächsten sechs Monate wird das Angular-Team aktiv an der Version weiterarbeiten. Sie werden Features veröffentlichen und Bugs fixen. Oktober 2017 wird die Version 4 den Long-Term-Status erreichen. Ab dann werden nur noch kritische Bugs gefixt und Sicherheitslücken gestopft.

Geschrieben von
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.