Routes ·
Router-Link & Router-View ·
Navigation ·
Route-Parameter ·
Navigation Guards ·
Lazy Loading
Vue Router ist der offizielle Router für Vue.js. Er ermöglicht die Navigation zwischen verschiedenen Seiten einer Single-Page-Application (SPA) mit dynamischen Pfaden, Guards und Lazy Loading.
Routes werden als Array von Route-Objekten definiert. Jede Route hat mindestens einen path und eine component. Der Router wird mit createRouter und einem history-Modus erstellt.
| Modus | Beschreibung | Beispiel |
|---|---|---|
| createWebHistory | HTML5 History (empfohlen) | /about |
| createWebHashHistory | Hash-basiert (kein Server-Support nötig) | /#/about |
| createMemoryHistory | Nur für Tests/SSR | - |
/:pathMatch(.*)* fängt alle nicht definierten Routen ab. Mit props: true werden Route-Parameter automatisch als Props an die Komponente übergeben.
RouterLink erzeugt einen Navigationslink. RouterView ist der Platzhalter, an dem die aktuelle Route gerendert wird. Beide sind die zentralen Komponenten für die Navigation.
RouterView ermöglicht das Anzeigen eines Loaders oder das Hinzufügen von Transitions. Die aktive Klasse kann mit active-class oder global mit linkActiveClass konfiguriert werden.
Programmatische Navigation ermöglicht das Navigieren ohne RouterLink – z.B. nach Formular-Submit oder bei bestimmten Aktionen. push fügt einen Eintrag im Browser-Verlauf hinzu, replace ersetzt den aktuellen Eintrag.
router.replace() für Formular-Submits oder Login-Weiterleitungen, damit der Benutzer nicht über den Zurück-Button zum Formular zurückkehrt.
Route-Parameter werden mit : in der Route definiert. Mit props: true werden Parameter automatisch als Props an die Komponente übergeben – das ist sauberer als $route.params.
props: true ist die beste Praxis – sie macht die Komponente wiederverwendbar und testbar, da sie nicht von $route abhängig ist.
Navigation Guards schützen Routen vor unberechtigtem Zugriff. Sie können global (router.beforeEach), pro Route (beforeEnter) oder in Komponenten (beforeRouteEnter) definiert werden.
meta-Felder für Metadaten wie requiresAuth oder title. Der globale Guard ist der beste Ort für zentrale Authentifizierungslogik.
Lazy Loading (Code-Splitting) lädt Komponenten nur dann, wenn sie tatsächlich benötigt werden – das reduziert die initiale Bundle-Größe und verbessert die Ladezeit.
defineAsyncComponent für Lade- und Fehlerzustände. Verwenden Sie webpackPrefetch oder webpackPreload für wichtige Routen.
routes
RouterLink
:id
beforeEach
import()
const routes = [{ path: '/users/:id', component: User, props: true }] ·
router.push('/about')