Was ist die Vue.js Composition API und wo liegt der Unterschied zur Options API? Ich erkläre es dir hier!
25. August 2024
Die Composition API wurde mit Vue 3 eingeführt, um Entwicklern mehr Flexibilität und eine bessere logische Strukturierung des Codes zu ermöglichen. Anstelle der Aufteilung von Code nach Optionen (wie data
, methods
, computed
usw.), ermöglicht die Composition API, logische Einheiten unabhängig von diesen Optionen zu organisieren.
Die Options API ordnet Code nach Optionen (z.B. data
, methods
, computed
). Dies ist einfach zu verstehen, kann aber bei komplexen Komponenten unübersichtlich werden.
Die Composition API hingegen gruppiert zusammengehörige Logik in setup
-Funktionen und kann auch in externe Funktionen ausgelagert werden.
<script>
export default {
data() {
return {
counter: 0
};
},
methods: {
increment() {
this.counter++;
}
},
computed: {
doubleCounter() {
return this.counter * 2;
}
}
};
</script>
<script lang="ts" setup>
import { ref, computed } from 'vue';
const counter = ref(0);
function increment() {
counter.value++;
}
const doubleCounter = computed(() => counter.value * 2);
</script>
In der Options API sind Methoden, Daten und berechnete Eigenschaften nach ihrer Funktion getrennt. In der Composition API hingegen wird die Logik zusammengefasst, was zu einer besseren Übersicht und Modularität führt, insbesondere bei größeren Komponenten.
<script>
export default {
data() {
return {
message: "Hello, world!",
count: 0
};
},
methods: {
incrementCount() {
this.count++;
}
},
computed: {
reversedMessage() {
return this.message.split('').reverse().join('');
}
}
};
</script>
<script lang="ts" setup>
import { ref, computed } from 'vue';
const message = ref("Hello, world!");
const count = ref(0);
function incrementCount() {
count.value++;
}
const reversedMessage = computed(() => message.value.split('').reverse().join(''));
</script>
Im Beispiel mit der Options API sind data
, methods
und computed
klar voneinander getrennt. In der Composition API ist die Logik für den Zähler und die Nachricht innerhalb des setup-Blocks, was eine bessere Übersicht und einfachere Wiederverwendbarkeit von Logik ermöglicht.