Seit Version 3 des Vue.js-Frameworks steht Entwicklern und Entwicklerinnen die Composition API zur Realisierung ihrer Anwendungen zur Verfügung. Vor allem bei größeren Komponenten soll die neue Programmierschnittstelle ür mehr Ordnung sorgen.
Die Composition API von Vue.js kann dabei helfen, den Code besser zu strukturieren.
Bei der bis Vue.js 2.x enthaltenen Options-API wurden Daten, Methoden und Computed Properties in einem Options-Objekt übergeben. Die technisch bedingte Aufteilung (eben in Data, Methods und Computed) führte dabei dazu, dass logisch zusammengehörende Teile wie Methoden und Daten eines Features auseinandergerissen und mit Methoden und Daten anderer Features vermischt wurden. Der Code der resultierenden Komponenten war dadurch schwer verständlich und nicht wiederverwendbar.
Mit der Composition-API sollte sich das ändern. Herzstück der Programmierschnittstelle ist die Methode setup. Diese fasst Variablen, Methoden, Computed Properties, Lifecycle-Methoden und Watchers zusammen. Die Methode wird dann der Komponenten-Konfiguration zugefügt:
Daten, die vorher im Data-Objekt definiert wurden, werden jetzt mit der Ref-Funktion innerhalb von setup() angelegt. Ref erzeugt dabei einen Wrapper um den eigentlichen Wert. Es entstehen reaktive Variablen, Vue bekommt also mit, wenn sich die Variable ändert, und kann beispielsweise den Wert im Template aktualisieren:
let count = ref(0);
Damit das funktioniert, ist es erforderlich, Vue mitzuteilen, welche Variablen im Template verfügbar sein sollen. Sie werden deshalb als Rückgabewert der setup-Methode aufgeführt. Das folgende Codestück zeigt das an einem einfachen Beispiel. Die Variable count wird im Template verwendet und deshalb in setup zurückgegeben:
Neben Variablen haben auch andere Komponentenbestandteile wie Funktionen, Computed-Properties oder Watchers ihren Platz in setup. Die neue Art der Variablendefinition hat dabei Auswirkungen auf den Zugriff in diesen Funktionen. Innerhalb von setup ist es nicht mehr möglich, mit this auf Variablen zuzugreifen; die Komponenteninstanz ist zur Zeit der Ausführung von setup noch nicht verfügbar. Außerdem sind die Variablenwerte nun über die Eigenschaft value erreichbar.
Wie beschrieben erzeugt Ref ein Wrapper-Objekt und man möchte in der Regel den darin enthaltenen Wert verwenden. Diese Regel gilt allerdings nicht im Template, dort packt Vue den Wrapper automatisch aus und es kann direkt die Variable referenziert werden. Das folgende Beispiel zeigt eine in setup definierte Funktion und den Zugriff auf den Wert der Variablen count:
Props werden wie gewohnt in der Komponentenkonfiguration definiert, sind aber aus den oben geschilderten Gründen ebenfalls nicht mehr mit this erreichbar. Da der Zugriff auf Props aber unverzichtbar ist, werden sie der setup-Methode als Parameter übergeben und können so benutzt werden. Ähnliches gilt für die Variable context, mit der sich Events auslösen lassen:
Wer eine größere Komponente mit den beschriebenen Techniken umbaut, wird danach womöglich feststellen, dass die Übersichtlichkeit noch nicht wirklich zugenommen hat. Aber keine Angst, das Beste kommt zum Schluss: Zusammengehörige Daten, Funktionen, Computed Properties und Watchers aus setup lassen sich in sogenannte Composables auslagern. Das führt dann zur gewünschten Strukturierung und Wiederverwendbarkeit des Codes und ist das eigentliche Ziel der Übung.
Das folgende Codestück zeigt ein Beispiel für ein Composable in einer separaten Datei counter.js.:
import { ref } from "vue";export function useCounter() { let count = ref(0); function increaseValue() { count.value = count.value + 1; } return { count, increaseValue }; }
In der Funktion useCounter werden alle Variablen und Funktionen die zur gewünschten Funktionalität gehören ausgelagert. Gemäß Konvention sollten Composable-Funktionen immer mit use beginnen. Rückgabewert der Funktion sind die Bestandteile, die von außen genutzt werden.
Das Einbinden erfolgt dann durch Import des Composable und Aufruf der use-Funktion:
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Das Feature Counter ist somit in eine separate Datei ausgelagert worden und könnte von anderen Komponenten wiederverwendet werden. In diesem einfachen Beispiel ist der Nutzen begrenzt, aber die Idee ist wohl ersichtlich. Die neue Composition-API lässt sich mit der Options-API mischen, und kann mit dem Plug-in Composition-API auch in Vue 2 verwendet werden. Für welche API man sich entscheidet, ist Geschmackssache, für größere Anwendungen und Komponenten bietet die Composition-API auf jeden Fall Vorteile.