
Vue.js ist eine beliebte Alternative zu größeren View-Libraries wie beispielsweise React. (Screenshot: vuejs.org/t3n)
Vue.js, der Underdog unter den JavaScript-Frameworks und der heimliche Liebling vieler Frontend-Entwickler, ist demnächst in Version 3.1 verfügbar. Dieser sogenannte Migration-Build soll mit Vue 2 kompatibel sein – und bietet Möglichkeiten, diese Kompatibilität nach Bedarf zu konfigurieren. Das soll es Entwicklern einfacher machen, eine Vue-2-App auf Vue 3 zu migrieren.
Per Default wird der Migration-Build im Vue-2-Modus laufen, einfach aus dem Grund, dass die meisten – allerdings nicht alle – öffentlichen APIs sich Vue-2-konform verhalten. Der abwärtskompatible Modus erlaubt es Entwicklern, Breaking Changes und Deprecations nacheinander zu bearbeiten, ohne ihre Projekte in einem Anlauf auf Vue 3 upgraden zu müssen. Bei veralteten Strukturen oder Änderungen gibt es in V 3.1 eine Laufzeitwarnung.
Einschränkungen
Das Ganze kommt mit einer Reihe von Einschränkungen. Abdecken soll der Migration-Build öffentlich dokumentiertes Verhalten von Vue 2 und dessen APIs.
- Apps, die sich auf Vue 2s interne APIs oder auf undokumentiertes Verhalten des Releases stützen, sind möglicherweise nicht mit dem Migration-Build verwendbar. In diesem Fall wird ein entsprechendes Refactoring des betreffenden Codes empfohlen.
- Wer seine Anwendung auf dem Migration-Build zum Laufen bekommt, wird sie bereits bevor die Migration komplett abgeschlossen ist in Produktion bringen können. Das bringt einen Performance-Overhead mit sich, der sich aber nicht merklich auf die UX der Anwender auswirken soll. Bei Projekten, die Komponenten-Libraries wie zum Beispiel Vuetify, Element UI oder Quasar verwenden, wird empfohlen, jeweils auf die die Veröffentlichung eines Vue-3-kompatiblen Releases zu warten.
- Wie Vue 3 bietet auch der Migration-Build keine IE11-Unterstützung. Wer die benötigt, muss seine App auf Vue 2 belassen.
- Projekte, die Server Side Rendering nutzen, können Vue 3.1 theoretisch nutzen. Vue 3 verfügt allerdings über keinen Bundle-Renderer mehr, für Server Side Rendering wird empfohlen, auf das Build-Tool Vite aus dem Vue-Ökosystem zurückzugreifen. Wer das Vue.js-Framework Nuxt.js nutzt, sollte vor dem Versuch einer Migration besser den Release von Nuxt 3 abwarten.
tl:dr: Große, sehr komplexe Apps zu upgraden, wird auch mit dem Migration-Build eine Herausforderung bleiben. Für Q3 in 2021 plant das Vue-Core-Team allerdings mehrere Features aus Vue 3, darunter die Composition-API, auf Vue 2.7 zu backporten.
Passend dazu: Was ist eigentlich Vue.js
Weitere Neuerungen
Daneben sind im Release auch einige Neuerungen und Performance-Verbesserungen enthalten. Darunter ein neuer Lifecycle-Hook für die Composition API namens onServerPrefetch und Unterstützung für CompilerOptions auf Komponentenebene. Auch neu in 3.1: Via app.config.compilerOptions sollen Entwickler den Runtime-Compiler konfigurieren können. Nicht zuletzt wurde der Support für KeepAlive – ein Wrapper-Element für dynamische Komponenten – verbessert.
V 3.1 soll unabhängig von V 3.2 entwickelt werden
Veröffentlicht wird der noch in der Betaphase befindliche Migration-Build mit Version 3.1, weitere Überarbeitungen sollen in Form von kleineren, darauf aufsetzenden Minor-Versions-Updates stattfinden. Neuerungen, die eigentlich für Version 3.1 angedacht waren, wurden auf Version 3.2 verschoben. Die Weiterentwicklung des Migration-Builds wollen die Entwickler möglicherweise Ende 2021 beenden. Für Entwickler bedeutet das: Die Migration zum Standard-Build solltet ihr bis dahin nach Möglichkeit abgeschlossen haben.
Erfahrene Entwickler, die bisher noch nicht mit Vue 3 gearbeitet haben, können die Version laut Readme zum GitHub-Projekt außerdem nutzen, um sich mit den Unterschiede zwischen den beiden Major-Versionen vertraut zu machen. Weitere Informationen finden sich im zugehörigen Changelog; im GitHub-Repository des Projekts gibt es ein How-to zum Upgrade-Workflow.