Die Stabilität von Vue.js

Datum: Mittwoch, 13. Juli 2022

Tag(s): stabilität vue.js angular typescript svelte

Vue.js wird von vielen Entwicklern als “stabil”, “schnell” und “unabhängig” bezeichnet. Gerade die Unabhängigkeit zu großen Konzernen ist ein Grund, warum viele Entwickler Vue.js anderen Frameworks wie Angular oder React vorziehen.

Dabei sind viele Entwickler von Angular.js zu Vue.js gewechselt, da die Umstellung von Angular.js zu Angular (die zweite Version von Angular) aufwendiger war, als der Wechsel von Angular.js zu Vue.js.

Ich habe heute aber etwas erlebt, was mich an der Stabilität von Vue zweifeln lässt.

Hintergrund

Vor zwei Jahren habe ich auf diesem Blog einen Post über die Verwendung von Vue.js als Angular Entwickler geschrieben.

Damals habe ich “vue-class-component” und “vue-property-decorator” mit Vue 2 verwendet, welches eine Verwendung von Vue mit nützlichen Decorators möglich macht und damit eine ziemlich ähnliche Syntax zu Angular ermöglicht. Das ist sehr nützlich für Entwickler, welche mit beiden Frameworks arbeiten.

Privat verwende ich für die meisten meiner Frontend-Projekte zwar Angular, habe allerdings mit bei zwei kleineren Projekten mit Vue.js angefangen.

Warum Vue.js nicht stabil genug ist

Heute habe ich bei einem Großteil meiner Frontend-Projekte die Abhängigkeiten aktualisiert. Bei Angular stoße ich in diesem Prozess öfter mal auf kleinere Probleme, die in der Regel aber schnell behoben sind.

Vue.js hat mich vor einem größeren Problem gestellt: vue-class-component ist zwar ein offizielles Paket des Vue.js Teams, wurde aber seit Jahren nicht mehr aktualisiert und ist im Moment (noch) nicht mit der aktuellen Vue Version kompatibel.

Das wäre kein großes Problem, wenn Vue 3 nicht schon vor 2 Jahren herausgekommen ist!

Es gibt zwar eine Beta, an dieser wurde allerdings ebenfalls seit Jahren nicht mehr entwickelt. Das hat vermutlich den Hintergrund, dass das Vue Team einen Wechsel zur Composition API bevorzugt.

(Es gab eine Diskussion auf GitHub, eine Klassen-API in den Kern von Vue 3 zu bringen, man hat sich aber dagegen entschieden und stattdessen die Composition API vorangebracht)

Zwar haben ein paar (nicht Vue.js-Kern-Team) Entwickler schon einen Converter und auch eine Alternative hervorgebracht, allerdings sind beide Projekte noch nicht komplett und bedeuten immer noch, dass man jede einzelne Component in einem Vue.js Projekt anpassen muss.

Warum das ein Problem ist

Ich habe mit beiden Frameworks mehrere Jahre Berufserfahrung. Während Updates von Angular seit der initialen Version 2 meistens nur aus anpassen von ein paar Abhängigkeiten und ein paar Zeilen Code sind, ist diese grundlegende Umstellung von Vue mit viel mehr Arbeitsaufwand verbunden.

Da die meisten Entwickler Vue ausgewählt haben, um weniger Arbeitsaufwand als bei Angular zu haben, ist das aus meiner Sicht ein Schuss ins Bein. Ein Wechsel von Vue 2 auf ein komplett anderes Framework wie Angular ist in vielen Fällen wahrscheinlich sogar einfacher, als der Wechsel von Vue 2 auf Vue 3.

Das erinnert doch sehr stark an den Wechsel von Angular.js (Version 1) auf Angular (Version 2). Vue.js wurde unter anderem eben genau deshalb erfolgreich, da dieser Wechsel innerhalb von Angular damals so schwer war.

Vue.js macht also gerade genau den gleichen Fehler, wie Google mit Angular damals.

Die Lösung

Da meine beiden Vue.js Projekte klein und unbedeutend sind, werde ich diese erst einmal etwas ruhen lassen und mich stattdessen weiter auf meine Angular Software konzentrieren.

Langfristig möchte ich zwar neben Angular auch leichtere Frontend-Frameworks verwenden, ich werde mir dazu allerdings andere Frameworks wie Svelte und React anschauen.

Svelte scheint noch leichtgewichtiger und schneller als Vue zu sein und ist ebenfalls unabhängig von großen Konzernen. Perfekt also für kleiner Projekte bei denen man so schwere Keulen wie React oder Angular nicht herausholen will.