VueJS - Template: Ein Anfängerleitfaden

Hallo da, zukünftiger Vue.js-Superstar! Ich freue mich sehr, dein Guide auf dieser aufregenden Reise in die Welt der Vue.js-Templates zu sein. Als jemand, der seit Jahren Informatik unterrichtet, kann ich dir versichern, dass Vue.js eines der einsteigerfreundlichsten Frameworks da draußen ist. Also, schnall dich an und tauchen wir ein!

VueJS - Template

Was ist eine Vue.js-Template?

Bevor wir mit dem Coden beginnen, lassen wir uns darstellen, was eine Template in Vue.js ist. Stell dir vor, es ist das Skelett deiner Webseite - es ist der Ort, an dem du die Struktur deines HTML definiert und etwas Vue.js-Magie hinzufügst, um es dynamisch und interaktiv zu machen.

Grundstruktur

Hier ist eine einfache Vue.js-Template:

<div id="app">
{{ nachricht }}
</div>

In diesem Beispiel ist {{ nachricht }} eine spezielle Syntax in Vue.js genannt "Interpolation". Es ist wie ein Platzhalter, den Vue.js durch tatsächliche Daten ersetzen wird.

Sehen wir es in Aktion:

<div id="app">
{{ nachricht }}
</div>

<script>
new Vue({
el: '#app',
data: {
nachricht: 'Hallo, Vue!'
}
})
</script>

Wenn du diesen Code ausführst, siehst du "Hallo, Vue!" auf deiner Seite. Magie, oder? Das {{ nachricht }} in der Template wird durch den Wert von nachricht in unserer Vue-Instanz-Daten ersetzt.

Direktiven: Vue's spezielle Anweisungen

Nun, lassen wir uns über Direktiven unterhalten. Diese sind spezielle Attribute, die mit v- beginnen und Vue.js Anweisungen geben, wie es sich verhalten soll. Sie sind wie kleine Zauberer, die auf dein HTML-Zauber sprayen!

v-bind: Dynamische Attribute

Die v-bind-Direktive wird verwendet, um ein Attribut dynamisch an einen Ausdruck zu binden. Sie ist so häufig, dass es sogar eine Abkürzung dafür gibt: :.

<div id="app">
<a v-bind:href="url">Klicke mich!</a>
<!-- Abkürzung -->
<a :href="url">Klicke mich!</a>
</div>

<script>
new Vue({
el: '#app',
data: {
url: 'https://vuejs.org/'
}
})
</script>

In diesem Beispiel wird das href-Attribut des <a>-Tags dynamisch auf den Wert von url in unseren Vue-Instanz-Daten gesetzt.

v-if, v-else-if, v-else: Bedingte Darstellung

Diese Direktiven erlauben es dir, Elemente basierend auf der Wahrheit des Ausdrucks bedingt darzustellen.

<div id="app">
<p v-if="gesehen">Jetzt siehst du mich</p>
<p v-else>Jetzt siehst du mich nicht</p>
</div>

<script>
new Vue({
el: '#app',
data: {
gesehen: true
}
})
</script>

Versuche gesehen auf false zu ändern und beobachte die Magie!

v-for: Listen-Darstellung

Die v-for-Direktive wird verwendet, um eine Liste von Elementen basierend auf einem Array darzustellen.

<div id="app">
<ul>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ul>
</div>

<script>
new Vue({
el: '#app',
data: {
todos: [
{ text: 'Lerne JavaScript' },
{ text: 'Lerne Vue' },
{ text: 'Baue etwas Awesome' }
]
}
})
</script>

Dies wird eine Liste von Todos darstellen. Jedes <li>-Element wird für jedes Element im todos-Array erstellt.

Ereignisverarbeitung mit v-on

Die v-on-Direktive wird verwendet, um auf DOM-Ereignisse zu hören und einige JavaScript auszuführen, wenn sie ausgelöst werden. Sie ist so nützlich, dass sie sogar eine Abkürzung hat: @.

<div id="app">
<p>{{ nachricht }}</p>
<button v-on:click="reverseMessage">Nachricht umkehren</button>
<!-- Abkürzung -->
<button @click="reverseMessage">Nachricht umkehren</button>
</div>

<script>
new Vue({
el: '#app',
data: {
nachricht: 'Hallo Vue.js!'
},
methods: {
reverseMessage: function () {
this.nachricht = this.nachricht.split('').reverse().join('')
}
}
})
</script>

Klicke auf den Button und beobachte, wie deine Nachricht eine Salto macht!

Zweifach-Binding mit v-model

Die v-model-Direktive erstellt eine zweifach-Binding auf Formular-Eingabeelementen oder Komponenten.

<div id="app">
<input v-model="nachricht">
<p>Die Nachricht ist: {{ nachricht }}</p>
</div>

<script>
new Vue({
el: '#app',
data: {
nachricht: 'Hallo Vue!'
}
})
</script>

Tippe in das Eingabefeld und sieh die Nachricht in Echtzeit aktualisieren. Es ist wie Magie, aber besser - es ist Vue.js!

Berechnete Eigenschaften und Beobachter

Berechnete Eigenschaften

Berechnete Eigenschaften sind wie super-gestärkte Daten-Eigenschaften. Sie sind Eigenschaften, die basierend auf anderen Eigenschaften berechnet werden.

<div id="app">
<p>Originalnachricht: "{{ nachricht }}"</p>
<p>Berechnete umgekehrte Nachricht: "{{ umgekehrteNachricht }}"</p>
</div>

<script>
new Vue({
el: '#app',
data: {
nachricht: 'Hallo'
},
computed: {
umgekehrteNachricht: function () {
return this.nachricht.split('').reverse().join('')
}
}
})
</script>

Die umgekehrteNachricht-Eigenschaft wird immer die Umkehrung von nachricht sein und aktualisiert sich automatisch, wenn nachricht geändert wird!

Beobachter

Beobachter sind wie wachsame Wächter für deine Daten. Sie beobachten Änderungen in den Daten und führen Aktionen aus, wenn diese Veränderungen auftreten.

<div id="app">
<p>
Stell eine ja/nee-Frage:
<input v-model="frage">
</p>
<p>{{ antwort }}</p>
</div>

<script>
new Vue({
el: '#app',
data: {
frage: '',
antwort: 'Fragen enthalten normalerweise ein Fragezeichen. ;-)'
},
watch: {
frage: function (neueFrage, alteFrage) {
this.antwort = 'Warte, bis du aufhörst zu tippen...'
this.debouncedGetAnswer()
}
},
created: function () {
this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
},
methods: {
getAnswer: function () {
if (this.frage.indexOf('?') === -1) {
this.antwort = 'Fragen enthalten normalerweise ein Fragezeichen. ;-)'
return
}
this.antwort = 'Nachdenken...'
var vm = this
axios.get('https://yesno.wtf/api')
.then(function (response) {
vm.antwort = _.capitalize(response.data.antwort)
})
.catch(function (error) {
vm.antwort = 'Fehler! Konnte die API nicht erreichen. ' + error
})
}
}
})
</script>

In diesem Beispiel beobachten wir die frage-Eigenschaft. Wenn sie sich ändert, aktualisieren wir die antwort und rufen eine Methode auf, um eine neue Antwort von einer API abzurufen.

Methoden-Tabelle

Hier ist eine Tabelle, die die Methoden zusammenfasst, die wir behandelt haben:

Methode Beschreibung Beispiel
v-bind Dynamische Bindung von Attributen <a v-bind:href="url">
v-if Bedingte Darstellung <p v-if="gesehen">Now you see me</p>
v-for Listen-Darstellung <li v-for="item in items">{{ item }}</li>
v-on Ereignisverarbeitung <button v-on:click="doSomething">
v-model Zweifach-Daten-Binding <input v-model="message">

Und das war's! Du hast gerade deine ersten Schritte in die wundervolle Welt der Vue.js-Templates gemacht. Denke daran, Übung macht den Meister, also habe keine Angst, mit diesen Konzepten zu experimentieren. Bevor du es weißt, wirst du erstaunliche Vue.js-Anwendungen bauen. Viel Spaß beim Coden!

Credits: Image by storyset