Deutsch

Erkunden Sie die Vue.js 3 Composition API im Detail. Lernen Sie, wie Sie wiederverwendbare, wartbare und testbare Vue.js-Anwendungen mit praktischen Beispielen und Best Practices für Entwickler weltweit erstellen.

Vue.js 3 Composition API: Ein tiefer Einblick für globale Entwickler

Vue.js hat sich dank seiner zugänglichen Lernkurve und leistungsstarken Funktionen schnell zu einer beliebten Wahl für die Erstellung moderner Webanwendungen entwickelt. Vue.js 3 geht mit der Einführung der Composition API, einer neuen Methode zur Organisation Ihrer Komponentenlogik, noch einen Schritt weiter. Dieser tiefe Einblick bietet einen umfassenden Leitfaden zum Verständnis und zur effektiven Nutzung der Composition API und vermittelt Ihnen die Fähigkeiten, um wartbarere, wiederverwendbarere und testbarere Vue-Anwendungen zu erstellen.

Was ist die Composition API?

Die Composition API ist ein Satz von APIs, der es uns ermöglicht, Vue-Komponenten unter Verwendung importierter Funktionen anstelle der Deklaration von Optionen zu erstellen. Im Wesentlichen ermöglicht sie es Ihnen, zusammengehörige Logik zu gruppieren, unabhängig davon, wo sie im Template erscheint. Dies steht im Gegensatz zur Options API (data, methods, computed, watch), die Sie zwingt, den Code nach diesen vordefinierten Kategorien zu organisieren. Stellen Sie sich die Options API so vor, dass sie Ihren Code danach organisiert, *was* er ist (Daten, Methode usw.), während die Composition API es Ihnen ermöglicht, den Code danach zu organisieren, *was er tut*.

Das Herzstück der Composition API ist die setup()-Funktion. Diese Funktion ist der Einstiegspunkt für die Verwendung der Composition API innerhalb einer Komponente. Innerhalb von setup() können Sie reaktiven Zustand, berechnete Eigenschaften, Methoden und Lebenszyklus-Hooks mithilfe von Composable-Funktionen definieren.

Warum die Composition API verwenden?

Die Composition API bietet mehrere Vorteile gegenüber der traditionellen Options API, insbesondere bei größeren und komplexeren Anwendungen:

Die Kernkonzepte verstehen

Lassen Sie uns in die Schlüsselkonzepte eintauchen, die der Composition API zugrunde liegen:

1. setup()

Wie bereits erwähnt, ist setup() der Einstiegspunkt für die Verwendung der Composition API. Es ist eine Komponentenoption, die ausgeführt wird, bevor die Komponente erstellt wird. Innerhalb von setup() definieren Sie reaktiven Zustand, berechnete Eigenschaften, Methoden und Lebenszyklus-Hooks und geben dann ein Objekt zurück, das die Werte enthält, die Sie dem Template zur Verfügung stellen möchten.

Beispiel:

import { ref } from 'vue'

export default {
  setup() {
    const count = ref(0)

    const increment = () => {
      count.value++
    }

    return {
      count,
      increment
    }
  }
}

In diesem Beispiel verwenden wir ref, um eine reaktive Variable namens count zu erstellen. Wir definieren auch eine Methode namens increment, die den Wert von count erhöht. Schließlich geben wir ein Objekt zurück, das count und increment enthält, was sie im Template der Komponente verfügbar macht.

2. Reaktiver Zustand mit ref und reactive

Die Composition API bietet zwei Kernfunktionen zur Erstellung von reaktivem Zustand: ref und reactive.

Beispiel mit ref:

import { ref } from 'vue'

export default {
  setup() {
    const message = ref('Hallo, Vue!')

    const updateMessage = (newMessage) => {
      message.value = newMessage
    }

    return {
      message,
      updateMessage
    }
  }
}

Beispiel mit reactive:

import { reactive } from 'vue'

export default {
  setup() {
    const state = reactive({
      name: 'John Doe',
      age: 30
    })

    const updateName = (newName) => {
      state.name = newName
    }

    return {
      state,
      updateName
    }
  }
}

3. Berechnete Eigenschaften mit computed

Berechnete Eigenschaften sind Werte, die von anderem reaktivem Zustand abgeleitet werden. Sie werden automatisch aktualisiert, wann immer sich ihre Abhängigkeiten ändern. Die computed-Funktion nimmt eine Getter-Funktion als Argument und gibt ein schreibgeschütztes reaktives ref-Objekt zurück.

Beispiel:

import { ref, computed } from 'vue'

export default {
  setup() {
    const firstName = ref('John')
    const lastName = ref('Doe')

    const fullName = computed(() => {
      return `${firstName.value} ${lastName.value}`
    })

    return {
      firstName,
      lastName,
      fullName
    }
  }
}

In diesem Beispiel ist fullName eine berechnete Eigenschaft, die von firstName und lastName abhängt. Wann immer sich entweder firstName oder lastName ändert, wird fullName automatisch aktualisiert.

4. Watcher mit watch und watchEffect

Watcher ermöglichen es Ihnen, auf Änderungen im reaktiven Zustand zu reagieren. Die Composition API bietet zwei Hauptmethoden zur Erstellung von Watchern: watch und watchEffect.

Beispiel mit watch:

import { ref, watch } from 'vue'

export default {
  setup() {
    const count = ref(0)

    watch(
      count,
      (newValue, oldValue) => {
        console.log(`Zähler geändert von ${oldValue} auf ${newValue}`)
      }
    )

    const increment = () => {
      count.value++
    }

    return {
      count,
      increment
    }
  }
}

Beispiel mit watchEffect:

import { ref, watchEffect } from 'vue'

export default {
  setup() {
    const message = ref('Hallo')

    watchEffect(() => {
      console.log(`Nachricht ist: ${message.value}`)
    })

    const updateMessage = (newMessage) => {
      message.value = newMessage
    }

    return {
      message,
      updateMessage
    }
  }
}

5. Lebenszyklus-Hooks

Die Composition API bietet Zugriff auf die Lebenszyklus-Hooks von Komponenten durch Funktionen, die mit on beginnen, wie onMounted, onUpdated und onUnmounted. Diese Funktionen nehmen einen Callback als Argument, der ausgeführt wird, wenn der entsprechende Lebenszyklus-Hook ausgelöst wird.

Beispiel:

import { onMounted, onUnmounted } from 'vue'

export default {
  setup() {
    onMounted(() => {
      console.log('Komponente wurde gemountet')
    })

    onUnmounted(() => {
      console.log('Komponente wurde unmounted')
    })

    return {}
  }
}

Erstellen von Composable-Funktionen

Die wahre Stärke der Composition API liegt in der Fähigkeit, wiederverwendbare Composable-Funktionen zu erstellen. Eine Composable-Funktion ist einfach eine Funktion, die einen Teil der Komponentenlogik kapselt und reaktiven Zustand sowie Funktionen zurückgibt, die in mehreren Komponenten verwendet werden können.

Beispiel: Erstellen wir eine Composable-Funktion, die die Mausposition verfolgt:

import { ref, onMounted, onUnmounted } from 'vue'

export function useMousePosition() {
  const x = ref(0)
  const y = ref(0)

  const updatePosition = (event) => {
    x.value = event.clientX
    y.value = event.clientY
  }

  onMounted(() => {
    window.addEventListener('mousemove', updatePosition)
  })

  onUnmounted(() => {
    window.removeEventListener('mousemove', updatePosition)
  })

  return {
    x,
    y
  }
}

Jetzt können Sie diese Composable-Funktion in jeder Komponente verwenden:

import { useMousePosition } from './useMousePosition'

export default {
  setup() {
    const { x, y } = useMousePosition()

    return {
      x,
      y
    }
  }
}

Praktische Beispiele und Anwendungsfälle

Lassen Sie uns einige praktische Beispiele untersuchen, wie die Composition API in realen Szenarien verwendet werden kann:

1. Datenabruf

Das Erstellen einer Composable-Funktion zum Abrufen von Daten von einer API ist ein häufiger Anwendungsfall. Dies ermöglicht es Ihnen, dieselbe Logik zum Datenabruf über mehrere Komponenten hinweg wiederzuverwenden.

import { ref, onMounted } from 'vue'

export function useFetch(url) {
  const data = ref(null)
  const error = ref(null)
  const loading = ref(true)

  onMounted(async () => {
    try {
      const response = await fetch(url)
      data.value = await response.json()
    } catch (err) {
      error.value = err
    } finally {
      loading.value = false
    }
  })

  return {
    data,
    error,
    loading
  }
}

Sie können diese Composable-Funktion dann wie folgt in Ihren Komponenten verwenden:

import { useFetch } from './useFetch'

export default {
  setup() {
    const { data, error, loading } = useFetch('https://api.example.com/data')

    return {
      data,
      error,
      loading
    }
  }
}

2. Formularvalidierung

Die Formularvalidierung ist ein weiterer Bereich, in dem die Composition API sehr hilfreich sein kann. Sie können Composable-Funktionen erstellen, die Validierungslogik kapseln und sie über verschiedene Formulare hinweg wiederverwenden.

import { ref } from 'vue'

export function useValidation() {
  const errors = ref({})

  const validateField = (fieldName, value, rules) => {
    let error = null
    for (const rule of rules) {
      if (rule === 'required' && !value) {
        error = 'Dieses Feld ist erforderlich'
        break
      } else if (rule === 'email' && !/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(value)) {
        error = 'Ungültiges E-Mail-Format'
        break
      }
    }

    if (error) {
      errors.value[fieldName] = error
    } else {
      delete errors.value[fieldName]
    }
  }

  return {
    errors,
    validateField
  }
}

Verwendung in einer Komponente:

import { useValidation } from './useValidation'
import { ref } from 'vue'

export default {
  setup() {
    const { errors, validateField } = useValidation()
    const email = ref('')

    const validateEmail = () => {
      validateField('email', email.value, ['required', 'email'])
    }

    return {
      email,
      errors,
      validateEmail
    }
  }
}

3. Verwaltung der Benutzerauthentifizierung

Authentifizierungslogik kann oft komplex sein und sich über mehrere Komponenten wiederholen. Die Composition API ermöglicht es Ihnen, eine Composable-Funktion zu erstellen, die die gesamte Authentifizierungslogik kapselt und eine saubere API für Ihre Komponenten bereitstellt.

Beispiel: (Vereinfacht)

import { ref } from 'vue'

export function useAuth() {
  const isLoggedIn = ref(false)
  const user = ref(null)

  const login = async (username, password) => {
    // API-Aufruf simulieren
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = true
    user.value = { username }
  }

  const logout = async () => {
    // API-Aufruf simulieren
    await new Promise(resolve => setTimeout(resolve, 1000))
    isLoggedIn.value = false
    user.value = null
  }

  return {
    isLoggedIn,
    user,
    login,
    logout
  }
}

Best Practices für die Verwendung der Composition API

Um das Beste aus der Composition API herauszuholen, sollten Sie die folgenden Best Practices berücksichtigen:

Häufige Fallstricke und wie man sie vermeidet

Obwohl die Composition API viele Vorteile bietet, gibt es auch einige häufige Fallstricke, die man kennen sollte:

Die Composition API und globale Teams

Die Composition API fördert die Zusammenarbeit in globalen Entwicklungsteams durch die Unterstützung von:

Fazit

Die Vue.js 3 Composition API ist ein leistungsstarkes Werkzeug, das die Organisation, Wiederverwendbarkeit und Testbarkeit Ihrer Vue-Anwendungen erheblich verbessern kann. Indem Sie die Kernkonzepte verstehen und die in diesem tiefen Einblick beschriebenen Best Practices befolgen, können Sie die Composition API nutzen, um wartbarere und skalierbarere Anwendungen für ein globales Publikum zu erstellen. Nehmen Sie die Composition API an und schöpfen Sie das volle Potenzial von Vue.js 3 aus.

Wir ermutigen Sie, mit der Composition API in Ihren eigenen Projekten zu experimentieren und die vielfältigen Möglichkeiten zu erkunden, die sie bietet. Viel Spaß beim Programmieren!