Routing-Grundlagen

Das Gerüst jeder Anwendung ist das Routing. Diese Seite führt Sie in die grundlegenden Konzepte des Routings für das Web ein und zeigt, wie Sie Routing in Next.js handhaben.

Terminologie

Zuerst werden Sie diese Begriffe in der Dokumentation häufig sehen. Hier ist eine kurze Referenz:

Terminologie für Komponentenbaum
  • Baum: Eine Konvention zur Visualisierung einer hierarchischen Struktur. Zum Beispiel ein Komponentenbaum mit Eltern- und Kindkomponenten, eine Ordnerstruktur usw.
  • Teilbaum: Ein Teil eines Baums, der bei einer neuen Wurzel (erster Knoten) beginnt und bei den Blättern (letzte Knoten) endet.
  • Wurzel: Der erste Knoten in einem Baum oder Teilbaum, wie ein Root-Layout.
  • Blatt: Knoten in einem Teilbaum, die keine Kinder haben, wie das letzte Segment in einem URL-Pfad.
Terminologie für URL-Anatomie
  • URL-Segment: Teil des URL-Pfads, der durch Schrägstriche begrenzt wird.
  • URL-Pfad: Teil der URL, der nach der Domain kommt (bestehend aus Segmenten).

Der app-Router

In Version 13 hat Next.js einen neuen App Router eingeführt, der auf React Server Components basiert und gemeinsame Layouts, verschachteltes Routing, Ladezustände, Fehlerbehandlung und mehr unterstützt.

Der App Router arbeitet in einem neuen Verzeichnis namens app. Das app-Verzeichnis funktioniert parallel zum pages-Verzeichnis, um eine schrittweise Einführung zu ermöglichen. So können Sie einige Routen Ihrer Anwendung für das neue Verhalten aktivieren, während andere Routen im pages-Verzeichnis für das bisherige Verhalten bleiben. Wenn Ihre Anwendung das pages-Verzeichnis verwendet, lesen Sie bitte auch die Dokumentation zum Pages Router.

Gut zu wissen: Der App Router hat Vorrang vor dem Pages Router. Routen über verschiedene Verzeichnisse sollten nicht auf denselben URL-Pfad aufgelöst werden und verursachen einen Build-Time-Fehler, um Konflikte zu vermeiden.

Next.js App-Verzeichnis

Standardmäßig sind Komponenten innerhalb von app React Server Components. Dies ist eine Leistungsoptimierung und ermöglicht eine einfache Übernahme. Sie können aber auch Client Components verwenden.

Empfehlung: Schauen Sie sich die Server-Seite an, wenn Sie neu bei Server Components sind.

Rollen von Ordnern und Dateien

Next.js verwendet einen dateisystembasierten Router, bei dem:

  • Ordner verwendet werden, um Routen zu definieren. Eine Route ist ein einzelner Pfad verschachtelter Ordner, der der Dateisystemhierarchie vom Root-Ordner bis zu einem finalen Blatt-Ordner folgt, der eine page.js-Datei enthält. Siehe Defining Routes.
  • Dateien verwendet werden, um UI zu erstellen, die für ein Routensegment angezeigt wird. Siehe spezielle Dateien.

Routensegmente

Jeder Ordner in einer Route repräsentiert ein Routensegment. Jedes Routensegment ist einem entsprechenden Segment in einem URL-Pfad zugeordnet.

Wie Routensegmente auf URL-Segmente abgebildet werden

Verschachtelte Routen

Um eine verschachtelte Route zu erstellen, können Sie Ordner ineinander verschachteln. Zum Beispiel können Sie eine neue /dashboard/settings-Route erstellen, indem Sie zwei neue Ordner im app-Verzeichnis verschachteln.

Die /dashboard/settings-Route besteht aus drei Segmenten:

  • / (Root-Segment)
  • dashboard (Segment)
  • settings (Blatt-Segment)

Dateikonventionen

Next.js bietet eine Reihe spezieller Dateien, um UI mit spezifischem Verhalten in verschachtelten Routen zu erstellen:

layoutGemeinsame UI für ein Segment und seine Kinder
pageEinzigartige UI einer Route und macht Routen öffentlich zugänglich
loadingLade-UI für ein Segment und seine Kinder
not-foundNicht-gefunden-UI für ein Segment und seine Kinder
errorFehler-UI für ein Segment und seine Kinder
global-errorGlobale Fehler-UI
routeServer-seitiger API-Endpunkt
templateSpezialisiertes neu gerendertes Layout-UI
defaultFallback-UI für Parallel Routes

Gut zu wissen: Die Dateiendungen .js, .jsx oder .tsx können für spezielle Dateien verwendet werden.

Komponentenhierarchie

Die React-Komponenten, die in speziellen Dateien eines Routensegments definiert sind, werden in einer bestimmten Hierarchie gerendert:

  • layout.js
  • template.js
  • error.js (React Error Boundary)
  • loading.js (React Suspense Boundary)
  • not-found.js (React Error Boundary)
  • page.js oder verschachteltes layout.js
Komponentenhierarchie für Dateikonventionen

In einer verschachtelten Route werden die Komponenten eines Segments innerhalb der Komponenten seines übergeordneten Segments verschachtelt.

Verschachtelte Komponentenhierarchie für Dateikonventionen

Kollokation

Zusätzlich zu speziellen Dateien haben Sie die Möglichkeit, eigene Dateien (z.B. Komponenten, Styles, Tests usw.) in Ordnern im app-Verzeichnis zu platzieren.

Dies liegt daran, dass während Ordner Routen definieren, nur die Inhalte, die von page.js oder route.js zurückgegeben werden, öffentlich adressierbar sind.

Ein Beispiel für eine Ordnerstruktur mit kollokierten Dateien

Erfahren Sie mehr über Projektorganisation und Kollokation.

Fortgeschrittene Routing-Muster

Der App Router bietet auch eine Reihe von Konventionen, um fortgeschrittenere Routing-Muster zu implementieren. Dazu gehören:

  • Parallel Routes: Ermöglichen es Ihnen, zwei oder mehr Seiten gleichzeitig in derselben Ansicht anzuzeigen, die unabhängig voneinander navigiert werden können. Sie können sie für geteilte Ansichten mit eigener Sub-Navigation verwenden, z.B. Dashboards.
  • Intercepting Routes: Ermöglichen es Ihnen, eine Route abzufangen und im Kontext einer anderen Route anzuzeigen. Sie können diese verwenden, wenn der Kontext der aktuellen Seite wichtig ist, z.B. beim Anzeigen aller Aufgaben während der Bearbeitung einer Aufgabe oder beim Vergrößern eines Fotos in einem Feed.

Diese Muster ermöglichen es Ihnen, reichhaltigere und komplexere UIs zu erstellen und machen Funktionen zugänglich, die historisch komplex für kleine Teams und einzelne Entwickler waren.

Nächste Schritte

Nachdem Sie nun die Grundlagen des Routings in Next.js verstanden haben, folgen Sie den untenstehenden Links, um Ihre ersten Routen zu erstellen:

Definieren von Routen

Erfahren Sie, wie Sie Ihre erste Route in Next.js erstellen.

Seiten und Layouts

Erstellen Sie Ihre erste Seite und gemeinsame Layouts mit dem App Router.

Verlinkung und Navigation

Erfahren Sie, wie Navigation in Next.js funktioniert und wie Sie die Link-Komponente und den `useRouter`-Hook verwenden.

Route Groups

Route Groups ermöglichen die Unterteilung Ihrer Next.js-Anwendung in verschiedene Bereiche.

Dynamische Routen

Dynamische Routen können verwendet werden, um Routensegmente programmatisch aus dynamischen Daten zu generieren.

Lade-UI und Streaming

Auf Suspense aufbauend ermöglicht das Lade-UI die Erstellung eines Fallbacks für bestimmte Routensegmente und streamt Inhalte automatisch, sobald sie bereitstehen.

Fehlerbehandlung

Behandlung von Laufzeitfehlern durch automatisches Umschließen von Routensegmenten und ihren verschachtelten Kindern in einer React Error Boundary.

Parallele Routen

Gleichzeitiges Rendern einer oder mehrerer Seiten in derselben Ansicht, die unabhängig voneinander navigiert werden können. Ein Muster für hochdynamische Anwendungen.

Interceptierende Routen (Intercepting Routes)

Nutzen Sie interceptierende Routen, um eine neue Route innerhalb des aktuellen Layouts zu laden, während die Browser-URL maskiert wird. Nützlich für erweiterte Routing-Muster wie Modals.

Route Handler

Erstellen Sie benutzerdefinierte Request-Handler für eine bestimmte Route mit den Request- und Response-APIs des Webs.

Middleware

Erfahren Sie, wie Sie Middleware verwenden, um Code vor dem Abschluss einer Anfrage auszuführen.

Projektorganisation

Erfahren Sie, wie Sie Ihr Next.js-Projekt organisieren und Dateien kolokalisieren können.

Internationalisierung

Unterstützung für mehrere Sprachen mit internationalisiertem Routing und lokalisierten Inhalten.