Der Großteil der TanStack Router-Dokumentation ist für file-basierte Routen geschrieben und soll Ihnen helfen, im Detail zu verstehen, wie file-basierte Routen konfiguriert werden und welche technischen Details dahinterstecken. Obwohl file-basierte Routen die bevorzugte und empfohlene Methode zur Konfiguration von TanStack Router sind, können Sie auch Code-basierte Routen verwenden, wenn Sie dies bevorzugen.
File-basierte Routen sind eine Methode, um Ihre Routen über das Dateisystem zu konfigurieren. Anstatt Ihre Routenstruktur per Code zu definieren, können Sie Ihre Routen mithilfe einer Reihe von Dateien und Verzeichnissen definieren, die die Routenhierarchie Ihrer Anwendung darstellen. Dies bietet eine Reihe von Vorteilen:
Während Verzeichnisse schon lange zur Darstellung der Routenhierarchie verwendet werden, führen file-basierte Routen ein zusätzliches Konzept ein: die Verwendung des Zeichens . im Dateinamen, um eine Routenverschachtelung zu kennzeichnen. Dies ermöglicht es Ihnen, die Erstellung von Verzeichnissen für wenige tief verschachtelte Routen zu vermeiden und weiterhin Verzeichnisse für breitere Routenhierarchien zu verwenden. Schauen wir uns einige Beispiele an!
Verzeichnisse können zur Darstellung der Routenhierarchie verwendet werden, was nützlich sein kann, um mehrere Routen in logische Gruppen zu organisieren und auch die Dateinamenlänge für große Gruppen von tief verschachtelten Routen zu reduzieren.
Siehe das folgende Beispiel
| Dateiname | Routenpfad | Komponentenausgabe |
|---|---|---|
| ʦ __root.tsx | <Root> | |
| ʦ index.tsx | / (exakt) | <Root><RootIndex> |
| ʦ about.tsx | /about | <Root><About> |
| ʦ posts.tsx | /posts | <Root><Posts> |
| 📂 posts | ||
| ┄ ʦ index.tsx | /posts (exakt) | <Root><Posts><PostsIndex> |
| ┄ ʦ $postId.tsx | /posts/$postId | <Root><Posts><Post> |
| 📂 posts_ | ||
| ┄ 📂 $postId | ||
| ┄ ┄ ʦ edit.tsx | /posts/$postId/edit | <Root><EditPost> |
| ʦ settings.tsx | /settings | <Root><Settings> |
| 📂 settings | <Root><Settings> | |
| ┄ ʦ profile.tsx | /settings/profile | <Root><Settings><Profile> |
| ┄ ʦ notifications.tsx | /settings/notifications | <Root><Settings><Notifications> |
| ʦ _pathlessLayout.tsx | <Root><PathlessLayout> | |
| 📂 _pathlessLayout | ||
| ┄ ʦ route-a.tsx | /route-a | <Root><PathlessLayout><RouteA> |
| ┄ ʦ route-b.tsx | /route-b | <Root><PathlessLayout><RouteB> |
| 📂 files | ||
| ┄ ʦ $.tsx | /files/$ | <Root><Files> |
| 📂 account | ||
| ┄ ʦ route.tsx | /account | <Root><Account> |
| ┄ ʦ overview.tsx | /account/overview | <Root><Account><Overview> |
Flat routing ermöglicht es Ihnen, .s zu verwenden, um Verschachtelungsebenen von Routen zu bezeichnen.
Dies kann nützlich sein, wenn Sie eine große Anzahl von eindeutig tief verschachtelten Routen haben und die Erstellung von Verzeichnissen für jede einzelne vermeiden möchten.
Siehe das folgende Beispiel
| Dateiname | Routenpfad | Komponentenausgabe |
|---|---|---|
| ʦ __root.tsx | <Root> | |
| ʦ index.tsx | / (exakt) | <Root><RootIndex> |
| ʦ about.tsx | /about | <Root><About> |
| ʦ posts.tsx | /posts | <Root><Posts> |
| ʦ posts.index.tsx | /posts (exakt) | <Root><Posts><PostsIndex> |
| ʦ posts.$postId.tsx | /posts/$postId | <Root><Posts><Post> |
| ʦ posts_.$postId.edit.tsx | /posts/$postId/edit | <Root><EditPost> |
| ʦ settings.tsx | /settings | <Root><Settings> |
| ʦ settings.profile.tsx | /settings/profile | <Root><Settings><Profile> |
| ʦ settings.notifications.tsx | /settings/notifications | <Root><Settings><Notifications> |
| ʦ _pathlessLayout.tsx | <Root><PathlessLayout> | |
| ʦ _pathlessLayout.route-a.tsx | /route-a | <Root><PathlessLayout><RouteA> |
| ʦ _pathlessLayout.route-b.tsx | /route-b | <Root><PathlessLayout><RouteB> |
| ʦ files.$.tsx | /files/$ | <Root><Files> |
| ʦ account.tsx | /account | <Root><Account> |
| ʦ account.overview.tsx | /account/overview | <Root><Account><Overview> |
Es ist äußerst wahrscheinlich, dass eine 100%ige Verzeichnis- oder Flat-Routenstruktur nicht die beste Wahl für Ihr Projekt ist. Deshalb erlaubt TanStack Router Ihnen, sowohl Flat- als auch Verzeichnis-Routen zu mischen, um einen Routenbaum zu erstellen, der die Vorteile beider Welten nutzt, wo es sinnvoll ist.
Siehe das folgende Beispiel
| Dateiname | Routenpfad | Komponentenausgabe |
|---|---|---|
| ʦ __root.tsx | <Root> | |
| ʦ index.tsx | / (exakt) | <Root><RootIndex> |
| ʦ about.tsx | /about | <Root><About> |
| ʦ posts.tsx | /posts | <Root><Posts> |
| 📂 posts | ||
| ┄ ʦ index.tsx | /posts (exakt) | <Root><Posts><PostsIndex> |
| ┄ ʦ $postId.tsx | /posts/$postId | <Root><Posts><Post> |
| ┄ ʦ $postId.edit.tsx | /posts/$postId/edit | <Root><Posts><Post><EditPost> |
| ʦ settings.tsx | /settings | <Root><Settings> |
| ʦ settings.profile.tsx | /settings/profile | <Root><Settings><Profile> |
| ʦ settings.notifications.tsx | /settings/notifications | <Root><Settings><Notifications> |
| ʦ account.tsx | /account | <Root><Account> |
| ʦ account.overview.tsx | /account/overview | <Root><Account><Overview> |
Sowohl Flat- als auch Verzeichnis-Routen können gemischt werden, um einen Routenbaum zu erstellen, der die Vorteile beider Welten nutzt, wo es sinnvoll ist.
Tipp
Wenn Sie feststellen, dass die Standardstruktur für file-basierte Routen nicht Ihren Bedürfnissen entspricht, können Sie jederzeit virtuelle Routen (Virtual File Routes) verwenden, um die Quelle Ihrer Routen zu steuern und dennoch die fantastischen Leistungsvorteile von file-basierten Routen zu nutzen.
Um mit file-basierten Routen zu beginnen, müssen Sie den Bundler Ihres Projekts so konfigurieren, dass er das TanStack Router Plugin oder die TanStack Router CLI verwendet.
Um file-basierte Routen zu aktivieren, müssen Sie React mit einem unterstützten Bundler verwenden. Prüfen Sie, ob Ihr Bundler in den untenstehenden Konfigurationsleitfäden aufgeführt ist.
Wenn Sie TanStack Router's file-basierte Routen über einen der unterstützten Bundler verwenden, wird unser Plugin automatisch Ihre Routenkonfiguration während der Entwicklungs- und Build-Prozesse Ihres Bundlers generieren. Dies ist der einfachste Weg, die Routengenerierungsfunktionen von TanStack Router zu nutzen.
Wenn Ihr Bundler noch nicht unterstützt wird, können Sie uns auf Discord oder GitHub kontaktieren, um uns Bescheid zu geben. Bis dahin fürchten Sie sich nicht! Sie können immer noch das Paket @tanstack/router-cli verwenden, um Ihre Routenbaumdatei zu generieren.
Ihre wöchentliche Dosis JavaScript-Nachrichten. Jeden Montag kostenlos an über 100.000 Entwickler geliefert.