Zurück zur Startseite

Vue Router Routes benennen: Regeln und Enum

Der Artikel beschreibt zwei Regeln für zuverlässige Routenbenennung in Vue Router: Pflichtverwendung von name und Speicherung in enum. Code-Beispiele, Vergleiche von Ansätzen und Vorteile für große Projekte werden geboten. Der Ansatz minimiert Bugs beim Refactoring.

Vue Router Route-Benennungsregeln für zuverlässigen Code
Advertisement 728x90

Optimale Routennamen-Organisation in Vue Router für Großprojekte

In realen Vue-Anwendungen mit zahlreichen Bildschirmen und Team-Entwicklung führen die einfachen Beispiele aus der Vue Router-Dokumentation zu Problemen. Das Vertrauen auf String-Pfade erschwert Refactoring und führt zu Fehlern. Zwei Schlüsselregeln machen das Routing robust: die obligatorische Verwendung von name für jede Route und die zentralisierte Speicherung der Namen in einem Enum oder Konstantenobjekt.

Dies entkoppelt die Navigationslogik von der URL-Struktur, vereinfacht Änderungen und minimiert Fehler.

Obligatorische Verwendung von name: Unabhängigkeit vom Pfad

Übergänge über path binden den Code eng an die aktuelle URL-Struktur. Beispiel aus der Dokumentation:

Google AdInline article slot
const routes = [
  {
    path: '/user/:username',
    component: User,
  }
]

Navigation router.push('/user/basov') bricht, wenn auf /profile/:username geändert wird. Mit name wird dies gelöst:

router.push({ name: 'profile', params: { username: 'john' } })

Der Router selbst wird den aktuellen Pfad ersetzen. Dies ist entscheidend für <router-link>, wo ohne name Refactoring Änderungen im gesamten Projekt erfordert.

Zentralisierung der Namen in einem Enum oder Objekt

Hardcodierte Strings wie 'profile' führen zu Tippfehlern, Duplikaten und schwierigem Refactoring. Extrahieren Sie Namen in ein separates Modul.

Google AdInline article slot

TypeScript-Enum:

export enum RouteNames {
  Profile = 'profile',
  Dashboard = 'dashboard',
  Settings = 'settings',
}

JavaScript-Objekt:

export const RouteNames = {
  UserList: 'user-list',
  UserSettings: 'user-settings',
  UserProfile: 'user-profile',
} as const;

Verwendung:

Google AdInline article slot
router.push({ name: RouteNames.Profile, params: { username: 'john' } });
<router-link :to="{ name: RouteNames.UserList }">Benutzer</router-link>;

Die IDE bietet Autovervollständigung, TypeScript – Typprüfung zur Kompilierzeit.

Ansatzvergleich mit Beispielen

Ohne Regeln:

// Komponente A
router.push('/user/list');

// Komponente B
<router-link to="/user/settings">Einstellungen</router-link>;

// Komponente C
if (route.path === '/user/profile') { /* ... */ }

Ändern von /user/list zu /users/all erfordert eine globale String-Suche. Tippfehler wie /User/List bleiben bis zur Laufzeit unbemerkt.

Mit Regeln:

// routes/names.ts
export const RouteNames = {
  UserList: 'user-list',
  UserSettings: 'user-settings',
  UserProfile: 'user-profile',
} as const;

// routes/index.ts
{ path: '/users/all', name: RouteNames.UserList, component: UserList },

Refactoring: Sie ändern nur den path, der name bleibt. Alle Übergänge funktionieren, Tippfehler werden eliminiert.

| Aspekt | Ohne Regeln | Mit Regeln |

|--------|------------|-------------|

| Namensort | Verstreut im Projekt | Zentralisiert |

| Pfad-Refactoring | Globale String-Suche | Änderung an einer Stelle |

| Tippfehler | Laufzeit | Kompilierung |

| Routen-Übersicht | Schwierig | Sofort sichtbar |

Produktionsvorteile

  • Skalierbarkeit: In Projekten mit 50+ Routen vereinfachen zentralisierte Namen das Onboarding neuer Entwickler.
  • Code-Review: Einfache Überprüfung der Navigation über Enum.
  • Testen: Mock-Routen nach Name, nicht nach Pfad.

Wenden Sie die Regeln von Projektbeginn an:

  • Weisen Sie jeder Route einen name zu.
  • Speichern Sie Namen in einem Enum/Objekt.
  • Verwenden Sie nur benannte Navigation in router.push und <router-link>.

Wichtige Erkenntnisse

  • name schützt vor Brüchen beim Refactoring der URL-Struktur.
  • Enum/Konstanten eliminieren Tippfehler und gewährleisten Autovervollständigung.
  • Zentralisierung vereinfacht Routing-Audit und Wartung.
  • Der Ansatz funktioniert in JS/TS, kompatibel mit Vue 3 Router.
  • Spart Debugging-Zeit in großen Teams.

— Editorial Team

Advertisement 728x90

Weiterlesen