Vue DevTools
Dein wichtigstes Debugging-Werkzeug: Die Vue DevTools Browser-Extension installieren und effektiv nutzen.
Was sind die Vue DevTools?
Die Vue DevTools sind eine Browser-Extension, die speziell für Vue.js entwickelt wurde. Sie erweitern die Entwicklerwerkzeuge deines Browsers um einen „Vue"-Tab, der dir tiefe Einblicke in deine laufende Anwendung gibt.
Stell dir vor, du könntest in deiner Rails-App live sehen, welche Instanzvariablen in welchem Partial gerade verfügbar sind, wie sich der Session-Zustand verändert und welche Events gerade gefeuert werden. Genau das bieten die Vue DevTools.
better_errors / web-console vs. Vue DevTools
In Rails nutzt du better_errors oder web-console, um Fehler im Server-Kontext zu debuggen. Vue DevTools sind das Frontend-Äquivalent: Sie zeigen dir den Zustand deiner Anwendung direkt im Browser — aber nicht nur bei Fehlern, sondern jederzeit und in Echtzeit.
Installation
Die Vue DevTools sind als Extension für alle großen Browser verfügbar:
Chrome / Edge / Brave
Im Chrome Web Store nach „Vue.js devtools" suchen und installieren.
Firefox
Im Firefox Add-ons Store nach „Vue.js devtools" suchen und installieren.
Nur im Development-Modus sichtbar
Die Vue DevTools funktionieren standardmäßig nur, wenn Vue im Development-Modus läuft (npm run dev). In Produktions-Builds sind sie aus Sicherheitsgründen deaktiviert. Du kannst sie manuell aktivieren, indem du app.config.devtools = true setzt — aber das sollte nur zum Debuggen geschehen.
Standalone-Version (ohne Extension)
Seit Vue DevTools 7 gibt es auch eine eigenständige Version, die direkt als Vite-Plugin eingebunden werden kann:
npm install -D vite-plugin-vue-devtoolsimport { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
export default defineConfig({
plugins: [
vue(),
vueDevTools(),
],
})Empfehlung: Beides installieren
Die Browser-Extension ist schnell zugänglich über die DevTools (F12). Das Vite-Plugin bietet zusätzliche Features wie einen integrierten Inspektor direkt im Browser-Fenster. Am besten beide installieren.
Komponentenbaum inspizieren
Das Herzstück der Vue DevTools ist der Komponentenbaum. Er zeigt die gesamte Hierarchie deiner Vue-Komponenten — von der Wurzel-Komponente App.vue bis zum kleinsten Button.
▼ <App>
▼ <RouterView>
▼ <HomeView>
► <TheHeader>
▼ <ProductList>
► <ProductCard key="1">
► <ProductCard key="2">
► <ProductCard key="3">
► <TheFooter>Wenn du eine Komponente im Baum auswählst, siehst du rechts deren Details:
- Props — Die von der Eltern-Komponente übergebenen Daten
- Reactive State — Alle reaktiven Variablen (
ref,reactive) - Computed — Berechnete Werte und ob sie aktuell im Cache sind
- Events — Welche Events die Komponente emittiert hat
- Slots — Welche Slots definiert sind und was sie enthalten
rails console vs. Komponentenbaum
In Rails nutzt du rails console, um Objekte live zu inspizieren. Der Vue-Komponentenbaum ist das visuelle Äquivalent: Du siehst alle Komponenten, ihre Props und ihren Zustand — in Echtzeit, während du mit der App interagierst.
State inspizieren und live ändern
Du kannst den Zustand jeder Komponente nicht nur ansehen, sondern direkt in den DevTools ändern. Das ist extrem nützlich zum Debuggen:
<ProductCard>
Props:
product: { id: 1, name: "Vue-Handbuch", price: 29.99 }
featured: true
Reactive State:
isInCart: false ← Klick zum Ändern!
quantity: 1 ← Wert direkt editieren!
Computed:
totalPrice: 29.99 (cached)Zustand live ändern
Klicke auf einen Wert in den DevTools, um ihn zu ändern. Die Komponente rendert sich sofort neu. Das ist wie binding.pry in Rails — aber ohne den Server anzuhalten. Du kannst Edge Cases testen, ohne den Code zu ändern und die Seite neu zu laden.
Pinia Stores debuggen
Der „Pinia"-Tab zeigt dir alle aktiven Stores, ihren Zustand und ihre History. Du kannst:
- Den aktuellen State jedes Stores sehen und editieren
- Alle Getters und ihre berechneten Werte inspizieren
- Die History aller State-Änderungen verfolgen (Time-Travel Debugging)
- Actions tracken — welche Actions wurden aufgerufen und mit welchen Parametern?
Stores:
▼ auth
State:
user: { id: 42, name: "Max", role: "admin" }
isLoggedIn: true
token: "eyJhbG..."
Getters:
fullName: "Max Mustermann"
isAdmin: true
▼ cart
State:
items: [{ id: 1, qty: 2 }, { id: 3, qty: 1 }]
couponCode: null
Getters:
totalItems: 3
totalPrice: 89.97Rails Logger vs. Pinia Timeline
In Rails verfolgst du den Anwendungsfluss über Rails.logger und die Server-Logs. In Vue verfolgt die Pinia-Timeline jede State-Änderung visuell. Du kannst sogar in der Zeit zurückreisen (Time Travel) und sehen, wie sich der State schrittweise verändert hat — wie git log für deinen Anwendungszustand.
Router inspizieren
Der „Routes"-Tab zeigt dir alle definierten Routen, die aktuelle Route und deren Parameter:
Aktuelle Route:
Path: /products/42
Name: product-detail
Params: { id: "42" }
Query: { tab: "reviews" }
Matched: ProductDetailView
Alle Routen:
/ → HomeView
/products → ProductListView
/products/:id → ProductDetailView
/cart → CartView
/login → LoginViewrails routes vs. Router-Tab
rails routes zeigt dir alle Server-Routen. Der Vue-DevTools-Router-Tab zeigt dir alle clientseitigen Routen — plus den aktuellen Zustand mit allen Parametern und Query-Strings. Wie rails routes, aber live und interaktiv.
Events und Performance
Event-Timeline
Die Timeline zeigt alle Events in chronologischer Reihenfolge: Lifecycle-Hooks, emittierte Events, Router-Navigationen und Pinia-Mutations. So siehst du exakt, was in welcher Reihenfolge passiert.
12:34:56.100 [Router] Navigation start → /products/42
12:34:56.102 [Component] ProductDetailView: setup()
12:34:56.105 [Component] ProductDetailView: onMounted()
12:34:56.110 [Pinia] products/fetchProduct(42)
12:34:56.350 [Pinia] products: state changed
12:34:56.352 [Component] ProductDetailView: re-render
12:34:56.355 [Router] Navigation completePerformance-Profiling
Die DevTools können die Render-Performance jeder Komponente messen. Du siehst, welche Komponenten wie oft und wie lange rendern — perfekt, um Performance-Engpässe zu finden.
Performance-Tipp
Wenn eine Komponente zu oft rendert, prüfe ob berechnete Werte (computed) statt Methoden verwendet werden. Computed-Properties werden gecacht und nur bei Änderung ihrer Abhängigkeiten neu berechnet.
Debugging-Tipps für den Alltag
1. Komponente im DOM finden
Rechtsklick auf ein Element → „Inspect" → dann in den Vue-Tab wechseln. Die entsprechende Komponente wird automatisch im Baum markiert. Alternativ: Im Vue-Tab den „Select"-Button klicken und dann im Browser auf die gewünschte Komponente klicken.
2. Konsolen-Zugriff
Wenn eine Komponente in den DevTools ausgewählt ist, kannst du in der Browser-Konsole über $vm auf die Komponenteninstanz zugreifen:
// Ausgewählte Komponente in der Konsole
$vm.count // Wert einer ref lesen
$vm.increment() // Methode aufrufen3. Conditional Breakpoints
Nutze debugger Statements direkt im Vue-Code:
<script setup>
import { watch } from 'vue'
const cart = useCartStore()
watch(() => cart.items, (items) => {
if (items.length > 10) {
debugger // Browser hält hier an
}
})
</script>4. Network-Tab für API-Calls
Die Vue DevTools zeigen keine HTTP-Requests. Nutze den Network-Tab deines Browsers (Filter auf „Fetch/XHR"), um API-Aufrufe zu sehen — genau wie du in Rails die Server-Logs liest.
5. Vue Warn-Meldungen
Vue gibt im Development-Modus hilfreiche Warnungen in der Konsole aus — z.B. bei fehlenden Props, falschen Typen oder vergessenen Keys in v-for. Diese Warnungen sind extrem nützlich und sollten nie ignoriert werden.
Debugging-Tools im Vergleich
| Aufgabe | Rails | Vue |
|---|---|---|
| Interaktive Konsole | rails console | Browser-Konsole + $vm |
| Fehler-Inspektor | better_errors | Vue DevTools + Error Overlay |
| Live-Debugging | binding.pry / byebug | debugger Statement |
| Routen anzeigen | rails routes | DevTools Router-Tab |
| State inspizieren | Rails.logger / pp | DevTools Pinia-Tab |
| Request-Logs | Server-Log (development.log) | Browser Network-Tab |
| Performance | rack-mini-profiler | DevTools Performance-Tab |
Empfohlene Editor-Einrichtung
Neben den Browser DevTools solltest du auch deinen Editor optimal einrichten. Für VS Code empfehlen wir:
Vue - Official (ehem. Volar)
Syntax-Highlighting, TypeScript-Integration, Auto-Complete für Templates. Die wichtigste Extension für Vue-Entwicklung.
ESLint
Zeigt Linting-Fehler direkt im Editor an. Konfiguration kommt aus dem Projekt.
Prettier
Automatische Code-Formatierung beim Speichern. Kein manuelles Formatieren mehr.
{
"recommendations": [
"vue.volar",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}VS Code-Konfiguration teilen
Lege eine .vscode/extensions.json im Projekt an. Wenn Teammitglieder das Projekt öffnen, schlägt VS Code die empfohlenen Extensions automatisch vor — ähnlich wie eine .tool-versions-Datei für Ruby-Versionen.
Zusammenfassung
- Vue DevTools als Browser-Extension und/oder Vite-Plugin installieren
- Der Komponentenbaum zeigt die gesamte UI-Hierarchie mit Props und State
- State kann live in den DevTools geändert werden — ohne Code-Änderung
- Pinia-Tab zeigt alle Stores mit Time-Travel Debugging
- Router-Tab zeigt alle Routen und die aktuelle Navigation
- Für API-Debugging den Browser Network-Tab nutzen
- VS Code mit Vue (Volar), ESLint und Prettier einrichten