Vue Router
Vue Router ist die offizielle Library, um mehrseitige Vue Applikationen zu erstellen.
Lösungsschritte
Lade folgendes Vue Projekt herunter und richte es lokal ein. Öffne es anschliessend in VS Code.
RouterView
RouterViewDie <Home> Komponente wird jetzt an der Stelle von <RouterView> gerendert.
Routes definieren
Neue Routes können in der Datei router/index.js definiert werden. Im routes Array muss ein neuer Eintrag mit den Eigenschaften path und component ergänzt werden.
Rufe im Browser nun folgende URLs auf, um das Routing in Aktion zu sehen (Port muss ggf. angepasst werden):
Home: http://127.0.0.1:5173
Über uns: http://127.0.0.1:5173/about
RouterLink
RouterLinkZuletzt soll die Navigation im Header auf die entsprechenden Routes verweisen.
Vue Router stellt hierfür eine spezielle <RouterLink> Komponente zur Verfügung, mit der ein Link auf eine Route generiert werden kann.
Die <RouterLink> Komponente akzeptiert eine to Property, mit der das Ziel des Links als Objekt angegeben werden kann:
Du kannst jetzt über die Navigation zwischen den Seiten wechseln.
Weil wir die <RouterLink> Komponente verwenden, markiert Vue automatisch den aktiven Menüpunkt für uns mit einer speziellen CSS-Klasse, die in diesem Beispiel bereits gestyled wurde.
Weitere Route ergänzen
Navigation guards
Navigation guards ermöglichen dir, den Zugriff auf eine Route zu steuern.
So kannst du beispielsweise einen Benutzer für spezifische Seiten auf ein Login umleiten, wenn dieser noch nicht eingeloggt ist.
Du erhältst drei Parameter in dieser Methode:
toenthält die Route, die ein Besucher aufruf (in diesem Fall/secret)fromenthält die vorherige Route, von der ein Besucher navigiert istnextist eine Funktion, mit der du die Navigation beinflussen kannst. Es ist wichtig, dass dienext()Funktion inbeforeEnteraufgerufen wird. Wenn du den Funktionsaufruf entfernst, blockiert Vue die Navigation (das kannst du gerne ausprobieren)
In der Browser-Konsole wird nun immer beim Aufruf der /secret Route eine Nachricht geloggt.
Wir möchten den Zugriff auf die /secret Route nur zu Zeiten mit «geraden Minuten» (0, 2, 4, 6...) zulassen. Zu Zeiten mit ungeraden Minuten soll der Besucher auf die Home-Route umgeleitet werden.
Die next Funktion ermöglicht dir, einen Benutzer umzuleiten. Dazu kannst du der Funktion einfach die Ziel-Route als Parameter übergeben:
Du solltest nun nur noch zu geraden Minutenzahlen auf die /secret Route zugreifen können. Zu unteraden Zeiten solltest du immer direkt auf die / Route umgeleitet werden.
Zusatzaufgabe: Nested Routes
Erstelle auf der AboutView unterhalb der Über uns Überschrift eine weitere Navigation:
News (/about/news)
Offene Stellen (/about/jobs)
Erstelle dazu zwei weitere View Komponenten:
NewsView
JobsView
Sorge nun mit Nested Routes dafür, dass diese beiden Unterseiten über die neue Navigation auf der AboutView korrekt angezeigt werden. Die Inhalte sollen dabei jeweils unterhalb der erstellten Navigation erscheinen: