Vue3 Eingebaute Direktiven
Vue.js verfügt über mehrere eingebaute Direktiven (Directives), um spezifisches reaktives Verhalten hinzuzufügen oder das DOM in Templates zu manipulieren.
Die folgenden sind häufig verwendete eingebaute Direktiven in Vue.js:
| Direktive | Anwendungsbeispiel | Beschreibung |
|---|---|---|
| v-text | <p v-text="message"></p> |
Aktualisiert den Textinhalt des ElementstextContent, ähnlich wie Interpolation{{ }}, aber es ist eine Einweg-Bindung. |
| v-html | <div v-html="htmlContent"></div> |
Aktualisiert den Textinhalt des ElementsinnerHTML, wird zur Ausgabe von HTML verwendet. |
| v-model | <input v-model="value"> |
Erstellt eine Zwei-Wege-Datenbindung bei Formularsteuerelementen und synchronisiert Eingabefelder mit Daten-Eigenschaften. |
| v-show | <div v-show="isVisible"></div> |
Schaltet die Anzeige und Sichtbarkeit eines Elements basierend auf dem Wahrheitswert eines Ausdrucks um, unter Verwendung der CSS-EigenschaftdisplayEigenschaft. |
| v-if | <p v-if="isVisible">Visible</p> |
Rendert ein Element bedingt basierend auf dem Wahrheitswert eines Ausdrucks; wenn die Bedingung falsch ist, wird das Element aus dem DOM entfernt. |
| v-else | <p v-if="isVisible">Visible</p><p v-else>Not Visible</p> |
v-ifEine ergänzende Direktive zum Anzeigen von Fallback-Inhalten, wenn die Bedingung falsch ist. |
| v-else-if | <template v-if="type === 'A'"><p>Type A</p></template><template v-else-if="type === 'B'"><p>Type B</p></template> |
Wird direkt nachv-ifundv-elsenach, zur Mehrfachbedingungsprüfung. |
| v-for | <li v-for="(item, index) in items" :key="index">{{ item }}</li> |
Iteriert über jedes Element eines Arrays oder Objekts und generiert eine entsprechende Anzahl von Elementen. |
| v-on | <button v-on:click="handleClick">Click me</button> |
Bindet einen Event-Listener, um DOM-Ereignisse abzuhören; kann abgekürzt werden als@。 |
| v-bind | <img v-bind:src="imageSrc.html"> |
Bindet HTML-Attribute dynamisch; kann abgekürzt werden als:。 |
| v-slot | <template v-slot:header><h2>Header</h2></template> |
Syntax für benannte Slots, bietet eine Stelle zum Einfügen von Inhalten von Kindkomponenten. |
| v-pre | <div v-pre>{{ message }}</div> |
Überspringt den Kompilierungsprozess für dieses Element und alle seine untergeordneten Elemente, wird verwendet, um rohe Mustache-Tags anzuzeigen. |
| v-cloak | [v-cloak] { display: none; } |
Verbirgt den Vorlageninhalt, bis die Vue-Instanz mit dem Kompilieren fertig ist, und verhindert so, dass nicht kompilierte Mustache-Tags angezeigt werden. |
| v-once | <p v-once>{{ message }}</p> |
Rendert das Element und die Komponente nur einmal und wird bei späteren Datenänderungen nicht aktualisiert. |
| v-memo |
<div v-memo="[valueA, valueB]"> ... </div> |
Speichert einen Teilbaum der Vorlage zwischen. Wenn die Komponente erneut rendert, falls |
v-text
- Nutzung:
<p v-text="message"></p> - Beschreibung: Aktualisiert die des Elements
textContent, ähnlich wie Interpolation{{ }}, aber es ist eine einseitige Bindung. Es kann verwendet werden, um den reinen Textinhalt eines Elements festzulegen.
Beispiel
<p v-text="message"></p>
Beispiel
data() {
return {
message: 'Hello, Vue!'
};
}
return {
message: 'Hello, Vue!'
};
}
v-html
- Nutzung:
<div v-html="htmlContent"></div> - Beschreibung: Aktualisiert die des Elements
innerHTML, wird verwendet, um Inhalte auszugeben, die HTML-Struktur enthalten. Auf Sicherheit sollte geachtet werden, um XSS-Angriffe zu vermeiden.
Beispiel
<div v-html="htmlContent"></div>
Beispiel
data() {
return {
htmlContent: '<strong>Vue.js</strong> ist großartig!'
};
}
return {
htmlContent: '<strong>Vue.js</strong> ist großartig!'
};
}
v-model
- Nutzung:
<input v-model="value"> - Beschreibung: Erstellt eine bidirektionale Datenbindung für Formularsteuerelemente, synchronisiert Eingabefelder mit Dateneigenschaften und unterstützt mehrere Formularsteuerelementtypen.
Beispiel
<input type="text" v-model="message">
Beispiel
data() {
return {
message: ''
};
}
return {
message: ''
};
}
v-show
- Nutzung:
<div v-show="isVisible"></div> - Beschreibung: Schaltet die Anzeige und Sichtbarkeit eines Elements basierend auf dem Wahrheitswert eines Ausdrucks um, unter Verwendung der CSS-
displayEigenschaft, um die Sichtbarkeit des Elements zu steuern.
Beispiel
<div v-show="isVisible">Sichtbar, wenn true</div>
Beispiel
data() {
return {
isVisible: true
};
}
return {
isVisible: true
};
}
v-if / v-else / v-else-if
- Nutzung:
<p v-if="isVisible">Visible</p><p v-else>Not Visible</p> - Beschreibung: Rendert ein Element bedingt basierend auf dem Wahrheitswert eines Ausdrucks.
v-elseundv-else-ifJav-ifEine ergänzende Direktive für die Prüfung mehrerer Bedingungen.
Beispiel
<p v-if="isVisible">Sichtbar</p>
<p v-else>Nicht sichtbar</p>
<p v-else>Nicht sichtbar</p>
Beispiel
data() {
return {
isVisible: true
};
}
return {
isVisible: true
};
}
v-for
- Nutzung:
<li v-for="(item, index) in items" :key="index">{{ item }}</li> - Beschreibung: Iteriert über jedes Element eines Arrays oder Objekts, erzeugt eine entsprechende Anzahl von Elementen und unterstützt die Angabe eines Schlüssels zur Verbesserung der Rendering-Effizienz.
Beispiel
<ul>
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
<li v-for="(item, index) in items" :key="index">{{ item }}</li>
</ul>
Beispiel
data() {
return {
items: ['Apple', 'Banana', 'Cherry']
};
}
return {
items: ['Apple', 'Banana', 'Cherry']
};
}
v-on (@)
- Nutzung:
<button v-on:click="handleClick">Click me</button> - Beschreibung: Bindet einen Event-Listener, um DOM-Ereignisse zu überwachen; kann abgekürzt werden als
@. Unterstützt Modifikatoren und dynamische Ereignisnamen.
Beispiel
<button v-on:click="handleClick">Klick mich</button>
Beispiel
methods: {
handleClick() {
alert('Button geklickt');
}
}
handleClick() {
alert('Button geklickt');
}
}
v-bind ( : )
- Nutzung:
<img v-bind:src="imageSrc.html"> - Beschreibung: Bindet HTML-Attribute dynamisch; kann abgekürzt werden als
:. Wird verwendet, um Elementattribute dynamisch festzulegen, zum Beispielsrc、hrefusw.
Beispiel
<img v-bind:src="imageSrc" alt="Vue Logo">
Beispiel
data() {
return {
imageSrc: 'https://vuejs.org/images/logo.png'
};
}
return {
imageSrc: 'https://vuejs.org/images/logo.png'
};
}
v-slot
- Nutzung:
<template v-slot:header><h2>Header</h2></template> - Beschreibung: Syntax für benannte Slots, bietet eine Stelle zum Einfügen von Inhalten von Kindkomponenten, verwendet für die Inhaltsverteilung in benutzerdefinierten Komponenten.
Beispiel
<BaseLayout>
<template v-slot:header>
<h2>Header-Inhalt</h2>
</template>
<template v-slot:footer>
<p>Footer-Inhalt</p>
</template>
</BaseLayout>
<template v-slot:header>
<h2>Header-Inhalt</h2>
</template>
<template v-slot:footer>
<p>Footer-Inhalt</p>
</template>
</BaseLayout>
Beispiel
// Definition der BaseLayout-Komponente
Vue.component('BaseLayout', {
template: `
<div>
<header><slot name="header"></slot></header>
<main><slot></slot></main>
<footer><Slot-Name="footer"></Slot></footer>
</div>
`
});
Vue.component('BaseLayout', {
template: `
<div>
<header><slot name="header"></slot></header>
<main><slot></slot></main>
<footer><Slot-Name="footer"></Slot></footer>
</div>
`
});
v-pre
- Nutzung:
<div v-pre>{{ message }}</div> - Beschreibung: Überspringt den Kompilierungsprozess für dieses Element und alle seine untergeordneten Elemente, wird verwendet, um rohe Mustache-Tags anzuzeigen und zu verhindern, dass Vue den Inhalt kompiliert.
Beispiel
<div v-pre>{{ message }}</div>
Beispiel
data() {
return {
message: 'Hello, Vue!'
};
}
return {
message: 'Hello, Vue!'
};
}
v-cloak
- Nutzung:
[v-cloak] { display: none; } - Beschreibung: Versteckt den Template-Inhalt, bis die Vue-Instanz die Kompilierung abgeschlossen hat, und verhindert so, dass unkompilierte Mustache-Tags angezeigt werden.
Beispiel
<div v-cloak>{{ message }}</div>
Beispiel
[v-cloak] { display: none; }
Beispiel
data() {
return {
message: 'Hello, Vue!'
};
}
return {
message: 'Hello, Vue!'
};
}
v-once
- Nutzung:
<p v-once>{{ message }}</p> - Beschreibung: Rendert das Element und die Komponente nur einmal und wird nicht bei nachfolgenden Datenänderungen aktualisiert; wird für statischen Inhalt oder Inhalt verwendet, der nicht häufig aktualisiert wird.
Beispiel
<p v-once>{{ message }}</p>
Beispiel
data() {
return {
message: 'Hello, Vue!'
};
}
return {
message: 'Hello, Vue!'
};
}