Zum Hauptinhalt springen

[Medium] Vue Grundlagen und API

1. Can you describe the core principles and advantages of the framework Vue?​

Beschreiben Sie die Kernprinzipien und Vorteile des Vue-Frameworks

Kernprinzipien​

Vue ist ein progressives JavaScript-Framework, dessen Kernprinzipien folgende wichtige Konzepte umfassen:

1. Virtual DOM​

Verwendet Virtual DOM zur Performance-Verbesserung. Es aktualisiert nur geänderte DOM-Knoten, anstatt den gesamten DOM-Baum neu zu rendern. Der Diff-Algorithmus vergleicht Unterschiede zwischen altem und neuem Virtual DOM.

2. Bidirektionale Datenbindung (Two-way Data Binding)​

Wenn sich das Model ändert, aktualisiert sich die View automatisch und umgekehrt. Entwickler müssen das DOM nicht manuell manipulieren.

3. Komponentenbasiert (Component-based)​

Teilt die gesamte Anwendung in einzelne Komponenten auf, was die Wiederverwendbarkeit erhöht. Jede Komponente hat ihren eigenen Zustand, Stil und Logik.

4. Lifecycle Hooks​

Besitzt eigene Lebenszyklen. Bei Datenänderungen werden entsprechende Lifecycle Hooks ausgelöst.

5. Direktivensystem​

Bietet gängige Direktiven wie v-if, v-for, v-bind, v-model für schnellere Entwicklung.

6. Template-Syntax​

Verwendet Templates zum Schreiben von HTML, wobei Daten durch Interpolation direkt in Templates gerendert werden können.

Einzigartige Vorteile von Vue (im Vergleich zu React)​

  1. Niedrigere Lernkurve: Einheitlicher offizieller Schreibstil
  2. Eigene Direktivensyntax: Intuitivere UI-Logikbehandlung
  3. Einfachere bidirektionale Bindung: v-model macht es sehr einfach
  4. Template- und Logiktrennung: Bessere Lesbarkeit und Wartbarkeit
  5. Vollständiges offizielles Ökosystem: Vue Router, Vuex/Pinia, Vue CLI

2. Please explain the usage of v-model, v-bind and v-html​

Erklären Sie die Verwendung von v-model, v-bind und v-html

v-model: Bidirektionale Datenbindung​

Bei Datenänderung aktualisiert sich automatisch der Template-Inhalt und umgekehrt.

<template>
<div>
<!-- Textfeld -->
<input v-model="message" />
<p>Eingegebener Inhalt: {{ message }}</p>

<!-- Checkbox -->
<input type="checkbox" v-model="checked" />
<p>Ausgewählt: {{ checked }}</p>

<!-- Auswahlliste -->
<select v-model="selected">
<option value="A">Option A</option>
<option value="B">Option B</option>
</select>
<p>Ausgewählte Option: {{ selected }}</p>
</div>
</template>

<script>
export default {
data() {
return {
message: '',
checked: false,
selected: 'A',
};
},
};
</script>

v-model-Modifikatoren​

<!-- .lazy: Aktualisierung nach change-Event -->
<input v-model.lazy="msg" />

<!-- .number: Automatische Konvertierung in Zahl -->
<input v-model.number="age" type="number" />

<!-- .trim: Automatisches Entfernen von Leerzeichen -->
<input v-model.trim="msg" />

v-bind: Dynamische Attributbindung​

Häufig zum Binden von Klassen, Links, Bildern usw. verwendet.

<template>
<div>
<!-- Klasse binden (Kurzform :class) -->
<div :class="{ active: isActive, 'text-danger': hasError }">Dynamische Klasse</div>

<!-- Style binden -->
<div :style="{ color: textColor, fontSize: fontSize + 'px' }">Dynamischer Stil</div>

<!-- Bildpfad binden -->
<img :src="imageUrl" :alt="imageAlt" />

<!-- Link binden -->
<a :href="linkUrl">Zum Link gehen</a>
</div>
</template>

v-html: HTML-String rendern​

Wird verwendet, wenn zurückgegebener Inhalt HTML-Tags enthält.

Sicherheitswarnung: Verwenden Sie v-html niemals mit benutzergeneriertem Inhalt, um XSS-Schwachstellen zu vermeiden!

Vergleichsübersicht​

DirektiveVerwendungKurzformBeispiel
v-modelBidirektionale FormularbindungKeine<input v-model="msg">
v-bindUnidirektionale Attributbindung:<img :src="url">
v-htmlHTML-String rendernKeine<div v-html="html"></div>

3. How to access HTML elements (Template Refs)?​

Wie greift man auf HTML-Elemente zu?

In Vue wird empfohlen, Template Refs statt document.querySelector zu verwenden.

Composition API (Vue 3)​

<template>
<div>
<input ref="inputElement" />
<button @click="focusInput">Focus Input</button>
</div>
</template>

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

const inputElement = ref(null);

const focusInput = () => {
inputElement.value?.focus();
};

onMounted(() => {
console.log(inputElement.value);
});
</script>

Hinweise: Der Variablenname muss mit dem ref-Attributwert im Template übereinstimmen. DOM-Elemente erst nach onMounted zugreifen.

4. Please explain the difference between v-show and v-if​

Erklären Sie den Unterschied zwischen v-show und v-if

Gemeinsamkeiten​

Beide steuern die Anzeige und das Ausblenden von DOM-Elementen basierend auf Bedingungen.

Unterschiede​

1. DOM-Manipulation​

  • v-show: Steuert über CSS display. Element bleibt im DOM.
  • v-if: Entfernt oder fügt Element direkt im DOM hinzu.

2. Performance-Unterschiede​

  • v-show: Höherer Anfangsaufwand (Element wird immer erstellt), niedrigerer Umschaltaufwand (nur CSS). Geeignet für häufiges Umschalten.
  • v-if: Niedrigerer Anfangsaufwand (rendert nicht bei false), höherer Umschaltaufwand (zerstört/erstellt neu). Geeignet für selten wechselnde Bedingungen.

3. Lifecycle-Auslösung​

  • v-if: Löst vollständigen Komponentenlebenszyklus aus
  • v-show: Löst keinen Komponentenlebenszyklus aus

Vergleichstabelle​

Eigenschaftv-ifv-show
AnfangsaufwandNiedrig (rendert nicht bei false)Hoch (rendert immer)
UmschaltaufwandHoch (zerstört/erstellt)Niedrig (nur CSS)
AnwendungsfallSelten wechselnde BedingungenHäufiges Umschalten
LifecycleLöst ausLöst nicht aus

Merkhilfe​

  • v-if: Rendert nicht wenn nicht angezeigt, für selten wechselnde Bedingungen
  • v-show: Von Anfang an gerendert, jederzeit bereit zur Anzeige, für häufiges Umschalten

5. What's the difference between computed and watch?​

Was ist der Unterschied zwischen computed und watch?

computed (Berechnete Eigenschaften)​

  • Cache-Mechanismus: Ergebnis wird gecacht und nur bei Abhängigkeitsänderung neu berechnet
  • Automatisches Tracking: Verfolgt automatisch verwendete reaktive Daten
  • Synchrone Berechnung: Muss synchron sein und Rückgabewert haben
  • Geeignet für: Datenformatierung, Filterung, Summierung

watch (Überwachungseigenschaften)​

  • Manuelles Tracking: Erfordert explizite Angabe der zu überwachenden Daten
  • Asynchrone Operationen: Geeignet für API-Aufrufe, Timer usw.
  • Kein Rückgabewert: Hauptsächlich für Seiteneffekte
  • Alter und neuer Wert: Kann Werte vor und nach Änderung abrufen

Vergleichstabelle​

Eigenschaftcomputedwatch
HauptverwendungNeue Daten aus bestehenden berechnenDatenänderungen überwachen und Effekte ausführen
RückgabewertPflichtNicht erforderlich
CacheJaNein
TrackingAutomatischManuell
Asynchrone OpsNicht unterstütztUnterstützt
Alter/neuer WertNicht verfügbarVerfügbar

Merkhilfe​

"computed berechnet Daten, watch führt Aktionen aus"

  • computed: Zum Berechnen neuer Daten (Formatierung, Filterung, Summierung)
  • watch: Zum Ausführen von Aktionen (API-Anfragen, Daten speichern, Benachrichtigungen)

Reference​