Das JavaScript-Framework Vue.js, Teil 10Vue-Anwendungen verschönern mit Vuetify
Von
Dr. Dirk Koller
4 min Lesedauer
Vue.js nimmt Web-Developern viel Arbeit ab, allerdings nicht beim User Interface Design. Wer alleine auf HTML und CSS setzt, muss viel Hand anlegen. Einfacher geht es mit der UI-Bibliothek Vuetify.
Vuetify steht als installierbares Plug-in für das Vue-Framework zur Verfügung.
(Bild: Vuetify)
Vuetify ähnelt anderen Komponentenbibliotheken wie Bootstrap oder Material, enthält aber fertig einsetzbare Vue-Komponenten. Das Einbinden von Vuetify geschieht am einfachsten mithilfe des Vue CLI. Im Assistenten sind für dieses Beispiel Vue 2 und Router auszuwählen. Für Vue 3 existiert derzeit noch eine Beta-Version der Bibliothek, die noch nicht für den produktiven Einsatz geeignet ist.
vue create vuetifulapp cd vuetifulapp vue add vuetify // Preset "Default" im Wizard auswählen
Webanwendung mit integrierter Vuetify-Bibliothek.
(Bild: Koller)
Das CLI fügt dem Projekt dabei das Plug-in vue-cli-plugin-vuetify und die Abhängigkeiten zu Vuetify hinzu. Die Anwendung sollte sich danach mit …
npm run serve
… im Entwicklungsserver starten lassen. Das blaue Vuetify-Logo bestätigt die erfolgreiche Installation.
Schnelle Erfolge mit Wireframes
Um schnell zu einem ansprechenden Layout zu kommen, nutzt man am besten eines der von Vuetify zur Verfügung gestellten fertigen Wireframes. In der Vorschau dieser Templates befindet sich in der rechten unteren Ecke ein Button, der zum Github-Repository führt. Dort lässt sich der Code kopieren und in die eigene Anwendung einfügen.
Im Folgenden ist der Code des Layouts Basic wiedergegeben, mit ihm kann einfach der Inhalt der Datei App.vue überschrieben werden:
Wie in der Abbildung zu erkennen ist, hat die App danach einen Navigationsbereich und einen Header. Mit dem Dreistrich (Burger)-Button lässt sich der Navigationsbereich ausblenden. Der Header wird durch v-app-bar und der Navigationsbereich durch Komponenten vom Typ v-navigation-drawer dargestellt.
In der Doku findet man zu jeder Komponente Anwendungsbeispiele inklusive Quellcode. Um Navigations-Items zuzufügen, wird v-navigation-drawer der folgende Code aus der Doku zugefügt:
Wichtig bei der Verwendung der Codebeispiele ist daran zu denken, dass sich hinter dem Reiter Script in der Regel auch Logik und Variablen zum Template verbergen, die in data() integriert werden müssen:
Der Navigationsbereich der App sieht damit schon ganz brauchbar aus, die Einträge deuten aber noch ins Leere. Um das zu ändern, wird in App.vue innerhalb von v-main das Element router-view ergänzt:
<v-main> <router-view></router-view> </v-main>
Außerdem werden die ListItems mithilfe der to-Prop um ein Ziel erweitert. Für die bereits vorhandene About-Seite sieht das folgendermaßen aus:
<v-list-item v-for="item in items" :key="item.title" :to="item.to" link> ...{ title: 'About', icon: 'mdi-help-box', to: '/about' },
Die Anwendung mit Footer.
(Bild: Koller)
Ein Klick auf den about-Link führt nun zur entsprechenden Seite, weitere Links können analog zugefügt bzw. angepasst werden. Wer mag, kann in v-app noch einen Footer zufügen, Codebeispiele finden sich im Komponenten-Bereich der Vuetify-Dokumentation:
Der Anwendungsrahmen sieht damit nun schon recht brauchbar aus.
Vuetifys Grid System
Der About-Text klebt noch ziemlich an den Rändern. Um das zu ändern, kann man den Inhalt des Templates in die Komponente v-container packen. v-container ist Teil des vuetify-Grid-Systems und zentriert den Inhalt. Das Grid-System ist an Bootstrap Grid angelehnt und besteht aus Containern, Rows und Cols, mit deren Hilfe sich der Inhalt anordnen und ausrichten lässt.
Maximal lassen sich 12 Elemente in einer Zeile verbauen. Benötigt man beispielsweise nur vier belegt jedes drei Plätze. Das folgende Codestück zeigt das Vorgehen an einer Zeile mit drei Cols (jede belegt 4 Plätze) und einer weiteren Zeile mit 4 Cols (jede belegt 3 Plätze):
Vuetifys Grid System ist wie das von Bootstrap „responsive“, versucht also, auf verschiedenen Geräten gut auszusehen. Mit Hilfe von „Media Breakpoints“ kann man definieren, bei welcher Screen-Größe sich das Layout anpasst. Die Bezeichnung für die Breakpoints sind xs, sm, md, lg und xl. Damit lässt sich beispielsweise steuern, ob Komponenten sichtbar sind. Um zum Beispiel einen Button nur auf Tablets und auf Mobiltelefonen anzuzeigen (sm < 960px) lässt sich die CSS-Klasse wie folgt formulieren:
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.
<v-btn class="d-sm-none">Mobile only</v-btn>
Die möglichen Konditionen sind unter Display Helpers in der Vuetify-Dokumentation beschrieben. Gewappnet mit diesem Wissen um Vuetifys Grid System werden den noch leeren Views der App im nächsten Beitrag mächtige UI-Komponenten zugefügt – es bleibt spannend!