Vue3 v-cloak Direktive
v-cloakDie Direktive wird verwendet, um unkompilierte Templates auszublenden, bis die Komponenteninstanz bereit ist.
Grundlegende Erklärung
v-cloakDie Direktive wird verwendet, um das Problem des "unkompilierten Template-Flashs" bei der Verwendung von DOM-Templates zu lösen. Wenn Benutzer die Seite besuchen, sehen sie möglicherweise die rohen{{ }}Mustache-Tags, bis die Vue-Komponente gemountet wird und den Inhalt rendert.
v-cloakEs bleibt auf dem Element, bis die zugehörige Komponenteninstanz gemountet ist. In Kombination mit CSS-Regeln kann es das rohe Template während dieser Zeit ausblenden.
- Erwarteter Typ: Keiner (akzeptiert keine Ausdrücke)
- Zweck: Blendet unkompilierte Templates aus, bis die Komponente bereit ist.
Hinweis: Diese Direktive wird nur in Setups ohne Build-Schritt benötigt.
Grundlegende Verwendung
Bei Verwendungv-cloak, müssen Sie es mit CSS-Regeln kombinieren:
Beispiel
[v-cloak] {
display: none;
}
Beispiel
{{ message }}
</div>
Wenn die Kompilierung abgeschlossen ist,v-cloakDas Attribut wird automatisch vom Element entfernt und das Element wird angezeigt.
Anwendungsfälle
v-cloakWird hauptsächlich in den folgenden Szenarien verwendet:
1. Vue über CDN importieren
Wenn Vue über CDN ohne Build-Schritt importiert wird, kann die Vorlage während des kurzen Zeitraums zwischen dem Laden der Seite und dem Vue-Skript möglicherweise noch nicht kompiliert sein:
Beispiel
<html>
<head>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div id="app">
<div v-cloak>
{{ message }}
</div>
</div>
<script>
const { createApp } = Vue
createApp({
data() {
return {
message: 'Hello Vue!'
}
}
}).mount('#app')
</script>
</body>
</html>
2. Komplexe Template-Strukturen
Bei komplexen Templates mit mehreren Datenbindungen verhindert v-cloak, dass Benutzer ungerenderten Inhalt sehen:
Beispiel
<h1>{{ title }}</h1>
<p>Willkommen, {{ username }}</p>
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
Wie v-cloak funktioniert
- Wenn die Seite geladen wird, ist Vue noch nicht initialisiert, und das
v-cloakAttribut existiert auf dem Element. - CSS-Regeln
[v-cloak] { display: none; }blenden diese Elemente aus. - Vue initialisiert und kompiliert das Template, wodurch reaktive Daten erstellt werden.
- Nachdem die Komponente gemountet wurde, entfernt Vue automatisch das
v-cloakAttributs. - Elemente werden sichtbar und zeigen den gerenderten Inhalt an.
Hinweise
Nur für Szenarien ohne Build-Schritt: Bei der Verwendung von Build-Tools (wie Vite, Webpack) ist das Template bereits während der Build-Phase kompiliert, daher wird v-cloak nicht benötigt.
Beispiel
/* Es wird empfohlen, das CSS im head zu platzieren */
<head>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
Muss mit CSSverwendet werden: v-cloak selbst versteckt keine Inhalte; es muss mit CSS-Regeln kombiniert werden, um zu wirken.
Unterschiede zu modernen Build-Tools
Bei der Verwendung moderner Build-Tools (wie Vite) ist v-cloak nicht erforderlich, weil:
- Das Template wird während der Build-Phase vorkompiliert
- Das JavaScript wird nach dem Bundling inline eingebettet oder asynchron geladen
- Das anfängliche HTML enthält keine unkompilierte Template-Syntax
Daher wird v-cloak hauptsächlich bei traditionellen CDN-Importmethoden oder einfachen HTML-Seitenszenarien verwendet.
Andere Erweiterungen
Vue3 Eingebaute Direktiven