Vue 3.5 "Tengen Toppa Gurren Lagann" veröffentlicht
(blog.vuejs.org)- Diese Minor-Version enthält interne Verbesserungen und nützliche neue Funktionen, ohne Breaking Changes bei der Kompatibilität.
Optimierung des Reactivity-Systems
- Das reaktive System von Vue wurde in großem Umfang refaktoriert, was zu Leistungssteigerungen und geringerem Speicherverbrauch (-56 %) geführt hat, ohne Änderungen am Verhalten.
- Durch das Refactoring wurden Probleme mit berechneten Werten und dem Speicher während SSR behoben.
- In 3.5 wurde das Reactivity-Tracking für große und tief verschachtelte reaktive Arrays optimiert, wodurch es in einigen Fällen bis zu 10-mal schneller ist.
Reactive Props Destructure
- Die reaktive Destrukturierung von Props ist in 3.5 stabilisiert und standardmäßig aktiviert.
- In
<script setup>sind aus demdefineProps-Aufruf destrukturierte Variablen jetzt reaktiv. - Diese Funktion vereinfacht die Deklaration von Props mit Standardwerten erheblich, indem sie die native Default-Value-Syntax von JavaScript nutzt.
SSR-Verbesserungen
Lazy Hydration
- Asynchrone Komponenten können jetzt den Zeitpunkt der Hydration steuern, indem sie über die Option
hydrateder APIdefineAsyncComponent()eine Strategie angeben.
useId()
useId()ist eine API, mit der pro Anwendung eindeutige IDs erzeugt werden können, die bei Server- und Client-Rendering stabil garantiert sind.- Sie kann zum Erzeugen von IDs für Formularelemente und Accessibility-Attribute verwendet werden und ist in SSR-Anwendungen ohne Hydration-Mismatches nutzbar.
data-allow-mismatch
- Wenn sich Client-Werte zwangsläufig von Server-Werten unterscheiden müssen (z. B. bei Datumswerten), können Warnungen zu Hydration-Mismatches mit dem Attribut
data-allow-mismatchunterdrückt werden. - Durch Angabe eines Werts im Attribut lässt sich der erlaubte Typ des Mismatchs einschränken (
text,children,class,style,attribute).
Verbesserungen bei Custom Elements
- 3.5 behebt viele langjährige Probleme rund um die API
defineCustomElement()und fügt mehrere neue Funktionen für das Schreiben von Custom Elements mit Vue hinzu. - Unterstützung für App-Konfigurationen von Custom Elements über die Option
configureApp. - Hinzugefügt wurden die APIs
useHost(),useShadowRoot()undthis.$host, um auf das Host-Element und die Shadow Root von Custom Elements zuzugreifen. - Es wird unterstützt, Custom Elements ohne Shadow DOM zu mounten, indem
shadowRoot: falseübergeben wird. - Es wird unterstützt, die Option
noncebereitzustellen, die an von Custom Elements injizierte<style>-Tags angehängt wird.
Weitere bemerkenswerte Funktionen
useTemplateRef()
- 3.5 führt mit der API
useTemplateRef()einen neuen Weg ein, um Template-Referenzen zu erhalten. - Vor 3.5 wurde empfohlen, normale Refs zu verwenden, bei denen der Variablenname mit einem statischen
ref-Attribut übereinstimmt. - Der bisherige Ansatz war auf statische
ref-Attribute beschränkt, da dasref-Attribut vom Compiler analysierbar sein musste. - Im Gegensatz dazu gleicht
useTemplateRef()Referenzen über eine Runtime-String-ID ab und unterstützt dadurch dynamische Ref-Bindings für sich ändernde IDs.
Deferred Teleport
- Eine bekannte Einschränkung der eingebauten Komponente
<Teleport>bestand darin, dass das Zielelement vorhanden sein musste, wenn die Teleport-Komponente gemountet wurde. - Dadurch wurde verhindert, dass Nutzer Inhalte in andere von Vue gerenderte Elemente teleportieren konnten.
- In 3.5 wurde dafür das Prop
deferfür<Teleport>eingeführt, das nach dem aktuellen Rendering-Zyklus gemountet wird, sodass dies jetzt funktioniert.
onWatcherCleanup()
- 3.5 führt
onWatcherCleanup()ein, eine global importierbare API zum Registrieren von Cleanup-Callbacks in Watchern.
3 Kommentare
Mit diesem Release ist der Komfort bei der tatsächlichen Komponentenentwicklung wirklich enorm gestiegen.
Der Name dieser Version ist also "Tengen Toppa Gurren Lagann". (Ein Meisterwerk! Soweit ich weiß, ist das wohl das Letzte von Gainax, das ich gesehen habe.)
Vue hat traditionell? Titel aus Mangas übernommen. 1.0 war Evangelion, 2.0 Ghost in the Shell, 3.0 One Piece, 3.3 Rurouni Kenshin, 3.4 Slam Dunk
https://en.wikipedia.org/wiki/Vue.js#Versions