Einführung in Vue3

Vue3 ist ein progressives Framework zum Erstellen von Benutzeroberflächen.

ProgressivDas bedeutet, dass Sie je nach den Anforderungen Ihres Projekts nur einen Teil der Funktionen von Vue einbinden können: von einer einfachen Verbesserung der Seiteninteraktion über die Erstellung vollständiger Single-Page-Anwendungen (SPA) bis hin zu Anwendungen mit Server-Side Rendering (SSR) ist Vue3 voll leistungsfähig.

Vue3 ist ein progressives JavaScript-Frontend-Framework, angeführt von Evan You, offiziell veröffentlicht am 18. September 2020, mit dem CodenamenOne Piece。

Im Vergleich zu Vue2 hat Vue3 die Kernarchitektur vollständig neu geschrieben: Das Reaktivitätssystem wechselte vonObject.definePropertyaktualisiert aufProxy, mit der Einführung der Composition API und einer umfassenden Verbesserung von Leistung, TypeScript-Unterstützung, Bundle-Größe und mehr.

Die offizielle Positionierung von Vue3 ist:ein Framework, mit dem man leicht loslegen kann, das aber genug Leistung hat, um komplexe Projekte zu unterstützen. Es erzwingt weder eine bestimmte Architektur wie Angular, noch erfordert es aufwendige manuelle Optimierung wie React; stattdessen findet es eine Balance zwischen Benutzerfreundlichkeit und Leistungsfähigkeit.

Wesentliche Unterschiede zwischen Vue3 und Vue2

Vue3 ist kein Patch-Upgrade von Vue2, sondern eine vollständige Neufassung.

VergleichspunktVue2Vue3
ReaktivitätsprinzipObject.defineProperty, kann neu hinzugefügte Eigenschaften und Änderungen von Array-Indizes nicht beobachtenProxy, proxyt alle Operationen auf dem Objekt vollständig, ohne die oben genannten Einschränkungen
CodeorganisationOptions-API: data, methods und computed sind getrenntComposition-API: Code wird nach logischen Belangen zusammengefasst
TypeScript-UnterstützungSpäter angepasst, eingeschränkte TypinferenzKernteil in TypeScript neu geschrieben, TS ist ein First-Class-Bürger
Bundle-GrößeLaufzeit etwa 20KB (gzip)Unterstützt Tree-shaking, bedarfsgerechtes Bundling, minimal nur 13.5KB
LeistungBaselineInitiales Rendering ist etwa 55% schneller, Update-Rendering ist etwa 133% schneller, Speichernutzung wird um etwa 54% reduziert
Stammknoten des Komponenten-TemplatesMuss genau ein Wurzelelement habenUnterstützt mehrere Wurzelknoten (Fragment)
Globale APIWird am Vue-Konstruktor eingebunden, mehrere Instanzen teilen den ZustandDurchcreateAppErstellen unabhängiger Instanzen mit gründlicherer Isolation

Kernfunktionen

Die Verbesserungen von Vue3 erstrecken sich über vier Dimensionen: das Reaktivitätssystem, das API-Design, den Compiler und neue integrierte Komponenten.

Composition API

Die Composition API ist die wichtigste Designänderung in Vue3; sie löst die grundlegenden Schwachstellen der Options API in Vue2:Zusammengehörige Logik ist über verschiedene Optionen verstreut, was die Wiederverwendung erschwert。

In der Options API können die Daten für eine "Benutzersuche"-Funktion verteilt sein aufdata、methods、computed、watchvier Optionen; während die Composition API es ermöglicht, die gesamte Logik für dieselbe Funktion zusammenhängend zu schreiben und sie dann in wiederverwendbare Funktionen (Composables) zu extrahieren.

Beispiel: Options API vs. Composition API

<!-- Ansatz der Options API (unterstützt von Vue2 / Vue3) -->
<script>
export default {
  data() {
    return {
count: 0, // Zählerdaten
username: 'example' // Benutzernamen-Daten
    }
  },
  computed: {
doubled() { // das Doppelte von count
      return this.count * 2
    }
  },
  methods: {
increment() { // count erhöhen
      this.count++
    }
  }
}
</script>

Beispiel: Empfohlener Ansatz (script setup Syntaxzucker)

<!-- Composition API + script setup (empfohlener Ansatz für Vue3) -->
<script setup>
import { ref, computed } from 'vue'

// Reaktive Daten werden direkt deklariert, keine Rückgabe nötig
const count = ref(0) // ref umschließt primitive Typen
const username = ref('example')

// berechnete Eigenschaft
const doubled = computed(() => count.value * 2)

// Methoden werden direkt als Funktionen definiert
function increment() {
count.value++ // Hinweis: Auf ref-umhüllte Werte muss über .value zugegriffen werden
}
</script>

<template>
  <!-- In Templates wird ref automatisch entpackt, .value ist nicht nötig -->
  <p>Benutzer: {{ username }}</p>
  <p>Anzahl: {{ count }}, doppelt: {{ doubled }}</p>
  <button @click="increment">+1</button>
</template>

<script setup>ist Syntaxzucker für die Composition API: Damit kannst du<script>Composition-API-Code direkt auf der obersten Ebene schreiben, ohne manuellreturn, alle Variablen und Funktionen der obersten Ebene werden automatisch für das Template verfügbar gemacht. Dies ist derzeit die am meisten empfohlene Methode, Single-File-Komponenten in Vue3 zu schreiben.

Reaktivitätssystem: Proxy ersetzt defineProperty

Die Reaktivität von Vue2 basiert aufObject.defineProperty, dieser Ansatz hat zwei Probleme, die grundsätzlich nicht gelöst werden können: Er kann neu hinzugefügte Objekteigenschaften nicht beobachten und er kann die direkte Zuweisung zu Array-Elementen über den Index nicht beobachten. Vue3 verwendetProxyum diese beiden Probleme grundlegend zu lösen.

Beispiel: ref und reactive

import { ref, reactive, watch } from 'vue'

// ref: geeignet für primitive Typen (number, string, boolean)
// Zugriff auf und Änderung von Werten erfordert .value
const count = ref(0)
count.value = 10

// reactive: geeignet für Objekte und Arrays
// Direkter Zugriff auf Eigenschaften, kein .value nötig
const user = reactive({
  name: 'EXAMPLE',
  age: 18,
  skills: ['vue', 'typescript']
})

// In Vue3 kann man neue Eigenschaften zu einem Objekt hinzufügen und die Reaktivität funktioniert weiterhin normal
user.email = '[email protected]'  // In Vue2 löst dieser Vorgang keine View-Updates aus

// Sie können auch Array-Elemente direkt ändern
user.skills[0] = 'vue3'  // In Vue2 löst dieser Vorgang keine View-Updates aus

// Reaktive Datenänderungen überwachen
watch(count, (newVal, oldVal) => {
  console.log(`count from ${oldVal}to ${newVal}`)
})

Composable-Funktionen (Composables)

Composables sind der Standardweg, zustandsbehaftete Logik in Vue3 wiederzuverwenden, ähnlich wie benutzerdefinierte Hooks in React.

Es ist üblich,useden Namen mit einem Präfix zu versehen, eine vollständige reaktive Logik in eine unabhängige Funktion auszulagern und sie in mehreren Komponenten wiederzuverwenden.

Beispiel: Benutzerdefinierter Composable

// Dateipfad: composables/useCounter.js
// Kapsle die Zählerlogik ein; jede Komponente kann sie wiederverwenden

import { ref, computed } from 'vue'

export function useCounter(initialValue = 0) {
  const count = ref(initialValue)           // Interner reaktiver Zustand
  const doubled = computed(() => count.value * 2)  // Abgeleiteter Zustand

  function increment() { count.value++ }
  function decrement() { count.value-- }
  function reset() { count.value = initialValue }

  // Zustand und Methoden zurückgeben, die nach außen verfügbar gemacht werden müssen
  return { count, doubled, increment, decrement, reset }
}

Beispiel: Verwendung von Composable in Komponenten

<script setup>
import { useCounter } from './composables/useCounter'

// Destrukturieren und direkt verwenden; Reaktivität bleibt erhalten
const { count, doubled, increment, decrement, reset } = useCounter(10)
</script>

<template>
  <p>Aktueller Wert: {{ count }}, verdoppelt: {{ doubled }}</p>
  <button @click="increment">+1</button>
  <button @click="decrement">-1</button>
  <button @click="reset">Zurücksetzen</button>
</template>

Neue integrierte Komponenten

Vue3 führt drei neue integrierte Komponenten ein, die drei häufige Szenarien in der Frontend-Entwicklung lösen.

KomponenteGelöstes ProblemTypische Anwendungsfälle
FragmentIn Vue2 mussten Komponenten-Templates einen einzelnen Root-Knoten haben; Fragment erlaubt das Koexistieren mehrerer Root-Knoten (kein zusätzliches Wrapper-div nötig)Komponenten für Listenelemente, wodurch unnötige DOM-Verschachtelung reduziert wird
TeleportRendert das HTML einer Komponente an eine beliebige angegebene Position im DOM und durchbricht damit die Einschränkungen des CSS-Stacking-Kontexts der übergeordneten KomponenteGlobale Modal-Dialoge, Toast-Benachrichtigungen, schwebende Toolbars
SuspenseZeigt elegant Fallback-Inhalte an, bevor asynchrone Komponenten fertig geladen sind, und behandelt asynchrone Wartezustände einheitlichSkeleton-Screens für lazy geladene Komponenten, Ladeindikatoren während Routenübergängen

Beispiel: Umsetzung eines globalen Modals mit Teleport

<script setup>
import { ref } from 'vue'
const showModal = ref(false)
</script>

<template>
  <button @click="showModal = true">Modal öffnen</button>

  <!--
Teleport montiert den Modal-Inhalt unter body,
statt innerhalb des Elternelements der aktuellen Komponente, wodurch z-index- und Overflow-Probleme vermieden werden
 -->
  <Teleport to="body">
    <div v-if="showModal" class="modal-mask">
      <div class="modal-box">
        <p>Dies ist ein globales Modal</p>
        <button @click="showModal = false">Schließen</button>
      </div>
    </div>
  </Teleport>
</template>

Beispiel: Verwenden von Suspense zum Behandeln des asynchronen Ladens von Komponenten

<!-- Übergeordnete Komponente App.vue -->
<template>
  <Suspense>
    <!-- Default-Slot: asynchroner Inhalt -->
    <template #default>
      <AsyncUserProfile />  <!-- Asynchrone Komponenten, die intern await verwenden -->
    </template>
    <!-- Fallback-Slot: Inhalt, der während des Ladens angezeigt wird -->
    <template #fallback>
      <div class="loading">Wird geladen...</div>
    </template>
  </Suspense>
</template>

Tree-Shaking-Unterstützung

Vue3 stellt alle globalen APIs auf benannte Exporte um. Dank der Tree-Shaking-Fähigkeit von Bundlern wie Vite / webpack werden nicht verwendete APIs nicht in die endgültige Ausgabe aufgenommen.

Beispiel: APIs bei Bedarf importieren

// Vue2: Alle APIs werden über das globale Vue-Objekt angesprochen, das sich nicht tree-shaken lässt
// Vue.nextTick(...)
// Vue.set(obj, 'key', value)

// Vue3: Import bei Bedarf; nur die tatsächlich verwendeten Funktionen werden in das Bundle aufgenommen
import { ref, computed, watch, nextTick, onMounted } from 'vue'

// Nur diese APIs werden importiert; ungenutzte (wie watchEffect, provide usw.) werden nicht in das Bundle aufgenommen

Lebenszyklus-Hooks

Alle Lifecycle-Hooks, die der Composition API von Vue3 entsprechen, haben das Präfixonund werden innerhalb vonsetupsetup().

Vue2 Options APIVue3 Composition APIAuslösezeitpunkt
beforeCreate— (setup selbst ersetzt dies)Vor der Initialisierung der Instanz
created— (setup selbst ersetzt dies)Instanz erstellt
beforeMountonBeforeMountVor dem Mounten
mountedonMountedGemountet, DOM zugänglich
beforeUpdateonBeforeUpdateVor Datenaktualisierungen und DOM-Neu-Rendering
updatedonUpdatedNach Abschluss des DOM-Neu-Renderings
beforeDestroyonBeforeUnmountVor dem Unmounten der Komponente (Name geändert)
destroyedonUnmountedUnmounten der Komponente abgeschlossen (Name geändert)

Beispiel: Verwenden von Lifecycle-Hooks

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'

const timer = ref(null)
const count = ref(0)

// Wird ausgeführt, nachdem die Komponente gemountet wurde (DOM kann sicher manipuliert werden)
onMounted(() => {
console.log('Component mounted')
// Startet einen Timer, der den Zähler jede Sekunde erhöht
  timer.value = setInterval(() => {
    count.value++
  }, 1000)
})

// Wird ausgeführt, wenn die Komponente unmountet wird (Seiteneffekte bereinigen, um Speicherlecks zu vermeiden)
onUnmounted(() => {
  clearInterval(timer.value)
console.log('Timer cleared')
})
</script>

<template>
  <p>Läuft seit: {{ count }} seconds</p>
</template>

Vollständige TypeScript-Unterstützung

Die Kernbibliothek von Vue3 wurde vollständig in TypeScript neu geschrieben und bietet präzise Typinferenz. In Kombination mit<script setup lang="ts">, können Sie TypeScript direkt in Single-File-Komponenten ohne zusätzliche Konfiguration verwenden.

Beispiel: Verwendung von TypeScript in script setup

<script setup lang="ts">
import { ref, computed } from 'vue'

// Schnittstelle, die die Datenstruktur innerhalb der Komponente definiert
interface User {
  id: number
  name: string
  email?: string
}

// ref leitet den Typ automatisch aus dem Anfangswert ab, oder er kann explizit angegeben werden
const user = ref<User>({
  id: 1,
  name: 'EXAMPLE',
})

// defineProps: Prop-Typen deklarieren und ableiten
const props = defineProps<{
 title: string       //Erforderlich
 count?: number      //Optional
}>()

// defineEmits: benutzerdefinierte Ereignisse deklarieren und typprüfen
const emit = defineEmits<{
 (e: 'update', value: number): void
 (e: 'close'): void
}>()

const displayName = computed(() => user.value.name.toUpperCase())

function handleUpdate() {
  emit('update', 42)
}
</script>

Anwendungsbereiche

Als vollständiges Frontend-Framework-Ökosystem deckt Vue3 ein breites Spektrum an Szenarien ab, von Single-Page-Anwendungen bis hin zu serverseitigem Rendering, vom Web bis Mobile.

Single-Page-Anwendungen (SPA)

Dies ist der klassischste Anwendungsfall für Vue3. In Kombination mitVue Router 4für Frontend-Routing,Pinia(der offiziell von Vue3 empfohlenen State-Management-Bibliothek, die Vuex ersetzt) zur Verwaltung des globalen Zustands, können Sie voll funktionsfähige Single-Page-Anwendungen erstellen.

Typische Projekttypen: Unternehmens-Admin-Systeme, Daten-Dashboards, E-Commerce-Shopfronten.

Serverseitiges Rendering (SSR) und statische Seitengenerierung (SSG)

Nuxt 3ist ein Full-Stack-Framework basierend auf Vue3, das SSR- und SSG-Fähigkeiten tief integriert. Es übernimmt automatisch die Komplexität des serverseitigen Renderns und ermöglicht Entwicklern, SEO-freundliche Anwendungen zu erstellen, genau wie beim Schreiben regulärer Vue-Komponenten.

Geeignete Szenarien: Content-Websites, Blogs, Dokumentationsseiten, Marketing-Landingpages.

Mobil und plattformübergreifend

uni-appUnterstützt die Verwendung der Vue3-Syntax zur gleichzeitigen Entwicklung von WeChat-Mini-Programmen, Alipay-Mini-Programmen, H5 und Apps (iOS/Android).Ionic + Vue3eignet sich für die Erstellung hochwertiger hybrider mobiler Anwendungen.

Desktop-Anwendungen

Electron + Vue3(über Toolchains wie electron-vite) kann Vue3-Anwendungen als plattformübergreifende Desktop-Anwendungen paketieren.Tauri + Vue3ist in den letzten Jahren eine beliebte Alternative, die Rust als Backend verwendet, was zu geringerer Anwendungsgröße und besserer Leistung führt.

Ökosystem der UI-Komponentenbibliotheken

Das Vue3-Ökosystem bietet eine reiche Auswahl an ausgereiften Komponentenbibliotheken:

KomponentenbibliothekPositionierungGeeignete Szenarien
Element PlusPC-Desktop-Komponentenbibliothek, die Vue3-Version von Element UIEnterprise-Admin-Systeme, datenintensive Anwendungen
Ant Design VueVue-Implementierung von Ant Design mit ausgereiften Design-SpezifikationenMid-/Backoffice-Systeme, Unternehmensanwendungen
Vant 4Mobile Komponentenbibliothek, leichtgewichtig und leistungsstarkMobile H5, WeChat-Mini-Programme
Vuetify 3Komponentenbibliothek im Material-Design-StilVerbraucherorientierte Webanwendungen
Naive UIIn TypeScript geschrieben, mit starken Theme-AnpassungsmöglichkeitenProjekte, die tiefgehende Theme-Anpassung erfordern
shadcn-vueBasiert auf Radix UI und Tailwind, eine Sammlung von Komponenten zum Kopieren und EinfügenProjekte, die Wert auf UI-Einzigartigkeit legen

Entwicklungsgeschichte

Vue.js entwickelte sich von einem persönlichen Projekt zu einem der drei führenden Frontend-Frameworks der Welt. Jede Hauptversion wurde von klaren technischen Anforderungen vorangetrieben.

Ursprünge (2013 - 2014)

Vue.js wurde von Evan You während seiner Zeit bei Google erstellt. Im Jahr 2013 erkundete er die Angular-Entwicklungserfahrung und hoffte, seinen Lieblingsteil – den datengetriebenen View-Update-Mechanismus – herauszulösen, während er die Teile entfernte, die er als übermäßig schwerfällig empfand.

Im Februar 2014 wurde Vue.js 0.8.0 öffentlich veröffentlicht. In der Folge erlangte es Aufmerksamkeit in der Laravel-Community und wurde allmählich in der JavaScript-Community bekannt.

Vue-1.x-Ära (2015)

Im Oktober 2015 wurde Vue 1.0 offiziell veröffentlicht, Codename Evangelion. Im selben Jahr wurdenVue Router,(2015.08)、Vuex und(2015.11)、Vue CLI(Dezember 2015) nacheinander veröffentlicht, was Vues Entwicklung von einer View-Layer-Bibliothek zu einem vollständigen progressiven Framework markierte.

Vue-2.x-Ära (2016 - 2020)

Im Oktober 2016 wurde Vue 2.0 veröffentlicht, führte einen Virtual-DOM-Ansatz ein (inspiriert von React), unterstützte serverseitiges Rendering (SSR) und verbesserte die Leistung erheblich.

Die Vue-2-Ära war die am schnellsten wachsende Expansionsphase des Vue-Ökosystems: Komponentenbibliotheken wie Element UI entstanden, Nuxt.js erschien und Vue wurde eines der Frontend-Frameworks mit den meisten GitHub-Sternen weltweit.

Im Februar 2019 wurde Vue 2.6 veröffentlicht, Codename Macross. Dies war die letzte Hauptversion von Vue 2 und schlug eine Brücke zwischen Vergangenheit und Zukunft.

Vue-3.0-Veröffentlichung (2020)

Die Entwicklung von Vue3 begann Ende 2018 und dauerte etwa zwei Jahre; dabei wurden 30+ RFCs (Request for Comments), 2600+ Commits und 628 PRs von 99 Mitwirkenden durchlaufen.

Am 18. September 2020 wurde Vue 3.0 offiziell veröffentlicht, Codename One Piece. Zentrale Änderungen:

  • Das reaktive System basiert aufProxyNeu geschrieben
  • Composition API eingeführt
  • Vollständige TypeScript-Unterstützung
  • Fragment, Teleport, Suspense hinzugefügt
  • Unterstützt Tree-shaking, deutlich reduzierte Bundle-Größe

Reifephase des Ökosystems (2021 - 2022)

ZeitVersion / EreignisBedeutung des Meilensteins
2021-08Vue 3.2<script setup>Der syntaktische Zucker wurde offiziell stabilisiert,<style> v-bindUnterstützt dynamische CSS-Bindung, wurde zu einer der beliebtesten Vue-3-Versionen
2022-02Vue 3 wurde zur StandardversionAuf der offiziellen Website von vue.js und npmvueDie Standard-Paketversion wechselte von 2 auf 3 und markierte damit die offizielle Dominanz des Vue-3-Ökosystems
2022-05Pinia wurde zur offiziellen EmpfehlungDie Pläne für Vuex 5 wurden auf Eis gelegt, Pinia wurde zur offiziell empfohlenen State-Management-Bibliothek für Vue 3
2022Vue 3.3Erweiterte Unterstützung für generische Komponenten, verbessertedefinePropsTypinferenz, wodurch das TypeScript-Erlebnis deutlich verbessert wird

Phase der kontinuierlichen Optimierung (2023 - heute)

ZeitVersionHauptmerkmale
2023-12Vue 3.4Template-Parser neu geschrieben (Leistung um ~2x verbessert), Optimierung des Reaktivitätssystems (reduzierte ungültige Berechnungsauslösungen),defineModelDas Makro wurde offiziell stabilisiert (vereinfacht die bidirektionale v-model-Bindung)
2024-09Vue 3.5Reaktive Props-Destrukturierung offiziell stabilisiert (Destrukturieren unter Beibehaltung der Reaktivität ohne toRef),useTemplateRefNeue APIs, SSR-Lazy-Hydration
2025 (in Entwicklung)Vue 3.6Integriertes reaktives Alien-Signals-System (Speicher der Abhängigkeitsverfolgung um ~14% reduziert), Vapor Mode hat Alpha erreicht (überspringt das virtuelle DOM vollständig, Bundle-Größe von 50KB auf ~6KB reduziert, Mount-Zeit von 100,000 Komponenten ~100ms)

Vapor ModeIst die wichtigste zukünftige technische Richtung für Vue 3: Durch statische Analyse zur Kompilierungszeit werden Templates direkt in präzisen nativen DOM-Manipulationscode kompiliert, wodurch der Prozess der Erstellung und des Diffings des virtuellen DOM vollständig umgangen wird. Es kann mit dem bestehenden virtuellen DOM-Modus koexistieren und unterstützt schrittweise Migration. Unterstützt derzeit nur<script setup>Composition API; Options API ist nicht anwendbar.


Vue3s Position unter den drei großen Frameworks

Vue 3, React und Angular sind die drei Mainstream-Frameworks in der Frontend-Entwicklung. Ihre Positionen zu verstehen, hilft dabei, geeignetere Technologieentscheidungen zu treffen.

VergleichsdimensionVue3React 18+Angular 17+
PositionierungProgressives Framework, bietet offiziell Routing und State-ManagementUI-Bibliothek, Ökosystem von der Community geführtVollständiges Framework, für alles gibt es offizielle Lösungen
SyntaxstilSingle-File-Komponenten (.vue), intuitive Template-SyntaxJSX, HTML in JavaScript schreibenKomponenten + Templates + Decorators, hoher Engineering-Anteil
LernkurveRelativ sanft, Template-Syntax nahe an HTMLMittel, erfordert Verständnis von JSX- und Hooks-DenkmodellenSteil, viele Konzepte (Module, Dependency Injection, RxJS)
TypeScriptKernbibliothek in TS neu geschrieben, gute UnterstützungGut, erfordert @types/reactTypeScript standardmäßig, tief integriert
LeistungAusgezeichnet, feingranulare Reaktivität, präzise AktualisierungenGut, React 19 Compiler weiter optimiertGut, Signals-Mechanismus wird kontinuierlich verbessert
Anwendbarer UmfangGeeignet für kleine bis mittlere und große ProjekteAlle Größenordnungen, ausgereifte Fälle in extrem großen ProjektenGroße Unternehmensprojekte, hohe Anforderungen an die Teamstandardisierung
Marktanteil in ChinaAm höchsten, breite Nutzung durch UnternehmenHochRelativ gering

Im heimischen Frontend-Ökosystem hat Vue 3 die höchste Nutzungsrate. Komponentenbibliotheken mit vollständiger chinesischer Dokumentation wie Element Plus und Ant Design Vue haben die Hürde für die Einführung in Unternehmen stark gesenkt. Wenn Ihr Ziel der heimische Arbeitsmarkt ist, gehört Vue 3 zu den Frameworks, die am meisten priorisiert werden sollten.


Einschränkungen von Vue 3

Das Verständnis der Grenzen von Vue 3 kann Ihnen helfen, rationalere technische Einschätzungen zu treffen.

EinschränkungKonkrete AusprägungEmpfehlung
Entscheidungskosten der Koexistenz von Options API und Composition APIZwei API-Stile koexistieren; Teams müssen sich auf einheitliche Standards einigen, andernfalls werden die Codestile inkonsistentNeue Projekte sollten einheitlich verwenden<script setup> + Composition API
Mentale Belastung durch .value bei reaktiven DatenrefIn Skripten erforderlich.value, in Templates automatisch entpackt, für Anfänger leicht verwirrendVolar-Plugin verwenden, die IDE gibt Hinweise; sobald man sich daran gewöhnt hat, ist es kein Problem mehr
Komplexität des State-Managements bei großen AnwendungenDie State-Management-Unterstützung von Pinia für extrem große Szenarien mit hoher Nebenläufigkeit ist weniger ausgereift als ReduxExtrem große Anwendungen können Pinia + modulare Aufteilungslösungen evaluieren
Hydrationskosten beim serverseitigen RenderingSSR-Seiten erfordern "Hydration", die Initialisierung dauert auf Low-End-Geräten längerVue 3.5 hat Lazy Hydration eingeführt, der Vapor Mode von Vue 3.6 wird dies weiter verbessern
Internationale ÖkosystemvielfaltIm Vergleich zu React sind die englischsprachige Community-Aktivität und die Stack-Overflow-Ressourcen von Vue etwas geringerDie offizielle Dokumentation ist von extrem hoher Qualität, die chinesische Dokumentation ist vollständig; konsultieren Sie vorrangig die offizielle Dokumentation
Weitere Erweiterungen