Detaillierte Erklärung der Vue3 app.directive()-Funktion


Vue3 全局 APIVue3 Global API

app.directive()ist eine sehr leistungsstarke Funktion, mit der Entwickler benutzerdefinierte globale Direktiven definieren können.

Direktiven sind ein spezielles Merkmal, das von Vue bereitgestellt wird und dazu dient, DOM-Elemente direkt zu manipulieren. Durch die Verwendung vonapp.directive(), können Sie Ihre eigenen Direktiven definieren und sie in der gesamten Anwendung verwenden.


1. Was ist eine Direktive?

Direktiven sind spezielle Attribute in Vue, die mitv-. Vue verfügt über einige integrierte, häufig verwendete Direktiven, wie zum Beispielv-if、v-for、v-bindusw. Diese Direktiven können uns helfen, DOM-Elemente bequemer zu manipulieren.

Zum Beispiel,v-ifDie Direktive kann anhand des Werts eines Ausdrucks entscheiden, ob ein Element gerendert wird:

Beispiel

<div v-if="isVisible">Inhalt anzeigen</div>

WannisVisibleisttruewhendivDas Element wird gerendert; andernfalls,divDas Element wird nicht gerendert.


2. Benutzerdefinierte Direktiven

Zusätzlich zu integrierten Direktiven erlaubt Vue uns auch, eigene Direktiven zu definieren. Benutzerdefinierte Direktiven können verwendet werden, um spezifische DOM-Operationen zu behandeln, wie z. B. Autofokus, Scroll-Überwachung usw.

In Vue3 können wir dieapp.directive()Funktion verwenden, um eine globale Direktive zu registrieren.


3. Grundlegende Verwendung von app.directive()

app.directive()Die Funktion akzeptiert zwei Parameter:

  • Direktivenname:Definieren Sie den Namen der Direktive. Beachten Sie, dass er nicht dasv-Präfix.
  • Direktivenobjekt:Ein Objekt, das Direktiven-Hook-Funktionen enthält und verwendet wird, um das Verhalten der Direktive zu definieren.

3.1 Eine einfache Direktive registrieren

Angenommen, wir müssen eine Direktive definieren, die das Element automatisch fokussiert, wenn es in das DOM eingefügt wird. Wir können sie so implementieren:

Beispiel

import { createApp } from 'vue';

const app = createApp({});

app.directive('focus', {
  mounted(el) {
    el.focus();
  }
});

app.mount('#app');

In diesem Beispiel definieren wir eine Direktive namensfocusDirektive. Wenn das Element in das DOM eingefügt wird, wird diemountedHook-Funktion aufgerufen, undel.focus()wird dafür sorgen, dass das Element automatisch den Fokus erhält.

3.2 Benutzerdefinierte Direktiven verwenden

Wenn Sie eine benutzerdefinierte Direktive in einer Vorlage verwenden, müssen Sie Folgendes hinzufügen:v-Präfix:

Beispiel

<input v-focus />

Beim Laden der Seite wird dasinputElement automatisch den Fokus erhalten.


4. Hook-Funktionen für Direktiven

Benutzerdefinierte Direktiven können mehrere Hook-Funktionen enthalten, um zu verschiedenen Lebenszyklusphasen bestimmte Operationen auszuführen. Häufige Hook-Funktionen sind:

  • mounted: wird aufgerufen, wenn das Element der Direktive in das DOM eingefügt wird.
  • updated: wird aufgerufen, wenn die Komponente der Direktive aktualisiert wird.
  • unmounted: wird aufgerufen, wenn das Element der Direktive aus dem DOM entfernt wird.

4.1 Beispiel: Scroll-Ereignisse abhören

Angenommen, wir müssen einige Operationen ausführen, wenn der Benutzer die Seite scrollt. Wir können einescrollDirektive:

Beispiel

app.directive('scroll', {
  mounted(el, binding) {
    const handler = binding.value;
    el.addEventListener('scroll', handler);
  },
  unmounted(el, binding) {
    const handler = binding.value;
    el.removeEventListener('scroll', handler);
  }
});

In diesem Beispiel wird diemountedHook-Funktion verwendet, um einen Scroll-Ereignis-Listener hinzuzufügen, und dieunmountedHook-Funktion wird verwendet, um den Listener zu entfernen.

4.2 Verwendung der Scroll-Direktive

Beispiel

<div v-scroll="onScroll" style="height: 200px; overflow-y: scroll;">
<p>Scroll-Inhalt...</p>
</div>

Definiere dieonScrollMethode in der Komponente:

Beispiel

methods: {
  onScroll(-Ereignis) {
    console.log('Benutzer scrollt', event);
  }
}

Wenn der Benutzer scrollt, wirddivElement,onScrolldie Methode aufgerufen.


5. Parameter und Modifikatoren von Direktiven

Benutzerdefinierte Direktiven können Parameter und Modifikatoren akzeptieren. Parameter sind der Teil nach dem Doppelpunkt im Direktivennamen, und Modifikatoren sind der Teil nach dem Punkt im Direktivennamen.

5.1 Beispiel: Verwenden von Parametern und Modifikatoren

Angenommen, wir müssen einecolorDirektive definieren, die die Hintergrundfarbe des Elements basierend auf dem Parameter setzt:

Beispiel

app.directive('color', {
  mounted(el, binding) {
    const color = binding.arg || 'red';
    const modifiers = binding.modifiers;
    if (modifiers.bold) {
      el.style.fontWeight = 'bold';
    }
    el.style.backgroundColor = color;
  }
});

Verwende es in der Vorlage:

Beispiel

<div v-color:blue.bold>Hintergrundfarbe ist blau, Schrift ist fett</div>

In diesem Beispiel wird dieblueist der Parameter der Direktive, undboldist der Modifikator.


Vue3 全局 APIVue3 Global API

Andere Erweiterungen