Alles wird gut!

AngularJS 2.0 erhält nahtlosen Upgradepfad

Michael Thomas
AngularJS 2.0

AngularJS-Logo (© Angular)

Die für viele Entwickler wie eine Horrornachricht klingende Ankündigung, dass es keinen Migrationspfad von AngularJS 1.x auf AngularJS 2.0 geben werde, ist vom Tisch. Stattdessen wird den AngularJS-Machern zufolge ein nahtloser Übergang zwischen den Frameworkversionen möglich sein.

Als auf der letztjährigen ng-europe in Paris Details über AngularJS 2 bekannt wurde, war die Verunsicherung groß: Das Entwicklerteam gab bekannt, das quelloffene Framework drastischen Veränderungen zu unterziehen, ja es praktisch komplett über den Haufen zu werfen und umzukrempeln. Dazu gehörte u. a. der Abschied von zahlreichen gewohnten Konzepten wie Controller, Directive Definition Objects, $scope, angular.module oder die Einführung der neuen Google-Sprache AtScript. Die Bekanntmachung, dass es keinen Migrationspfad von 1.x nach 2.0 geben würde, trug ebenfalls nicht gerade dazu bei, die Verunsicherung der Community zu besänftigen.

Letzteres ist nun allerdings kein Thema mehr: Wie das AngularJS-Team bekannt gegeben hat, wird es einen nahtlosen Upgradepfad zwischen AngularJS 1.x und AngularJS 2.0 geben. Pläne, wie etwa die auf der ng-conf 2015 in Salt Lake City in Aussicht gestellte „Pseudomigration“ mithilfe des ng-router, der er ermöglichen sollte, Teile aus AngularJS 1.x-Anwendungen in AngularJS 2.0 zu verwenden, sind damit ebenfalls vom Tisch.

Angular 1 und 2 Seit‘ an Seit‘

Vielmehr soll AngularJS 2 eine nahtlose Vermischung von bestehenden AngularJS 1-Anwendungen mit Komponenten und Services aus AngularJS 2 zu einer einzigen Anwendung erlauben. Somit ist es zukünftig möglich, eine Anwendung im Rahmen kleiner Commits Service für Service bzw. Komponente für Komponente zu aktualisieren, anstatt wie in der letzten Interation View für View.

Dabei muss die Interoperabilität zwischen AngularJS 1 und 2 im Hinblick auf Dependency Injection, Komponentenverschachtelung, Transklusion und Änderungserkennung gegeben sein. Dazu stellt das AngularJS-Team eine ng-upgrade genannte Bilbiothek bereit, die zusammen mit AngularJS 2 in AngularJS 1 eingebunden wird. Wie sich diese Schritte im einzelnen gestalten, erläutert das Entwicklerteam ausführlich in einem Post auf dem offiziellen AngularJS-Blog.

Ein beispielhafter, typischer Upgrade-Prozess soll sich folgendermaßen gestalten:

  1. Die AngularJS 2- und ng-upgrade-Bibliotheken in die bestehende Anwendung einbinden.
  2. Eine Komponente auswählen, die man migrieren möchte.
    a) Ein Direktiven-Template von Angular 1 soweit bearbeiten, dass es mit der Syntax von AngularJS 2 konform ist.
    b) Die Controller/Linkging-Funktion der Direktive in die Syntax/Semantik von AngularJS 2 konvertieren.
    c) ng-upgrade nutzen, um die nun in eine Komponente verwandelte Direktive als AngularJS 1-Komponente zu exportieren (dies ist nötig, wenn man die neue AngularJS 2-Komponente von einem AngularJS 1-Template aufrufen möchte).
  3. Einen Service auswählen, den man migrieren möchte.
    a) Die meisten Services sollten keine oder nur minimale Änderungen nötig machen.
    b) Den Serice in AngularJS 2 konfigurieren.
    c) Optional, falls er noch von anderen Teilen des AngularJS 1-Codes genutzt wird: Den Serice via ng-upgrade in AngularJS 1 reexportieren.
  4. Die Schritte 2 und 3 in einer der Anwendungsentwicklung angemessenen Reihenfolge wiederholen.
  5. Sobald keine Services oder Komponenten mehr konvertiert werden müssen, den Top-Level AngularJS 1-Bootstrap durch den AngularJS 2-Bootstrap ersetzen.

Jede individuelle Änderung kann dabei einzeln durchgeführt werden; die Anwendung arbeitet auch weiterhin und kann so kontinuierlich mit Updates versorgt werden. Dabei entstehen desto weniger Aufwand und Probleme, je modularisierter und komponentengetriebener eine Anwendung ist. Neben der Erleichterung für die Community ist die Ankündigung des Migrationspfades also auch eine Lektion für die Vorteile von Clean Code und die Befolgung von Best Practices, wie sie im AngularJS Style Guide niedergelegt sind.

Verwandte Themen:

Geschrieben von
Michael Thomas
Michael Thomas
Michael Thomas studierte Erziehungswissenschaft an der Johannes Gutenberg-Universität Mainz und arbeitet seit 2013 als Freelance-Autor bei JAXenter.de. Kontakt: mthomas[at]sandsmedia.com
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: