Der Großteil der TanStack Router-Dokumentation ist für dateibasierte Routenführung geschrieben und soll Ihnen helfen, detaillierter zu verstehen, wie dateibasierte Routenführung konfiguriert wird und welche technischen Details dahinterstecken. Obwohl dateibasierte Routenführung die bevorzugte und empfohlene Methode zur Konfiguration von TanStack Router ist, können Sie auch codebasierte Routenführung verwenden, wenn Sie dies bevorzugen.
Dateibasierte Routenführung ist eine Methode zur Konfiguration Ihrer Routen mithilfe des Dateisystems. Anstatt Ihre Routenstruktur per Code zu definieren, können Sie Ihre Routen über eine Reihe von Dateien und Verzeichnissen definieren, die die Routenhierarchie Ihrer Anwendung darstellen. Dies bringt eine Reihe von Vorteilen mit sich
Während Verzeichnisse lange Zeit zur Darstellung der Routenhierarchie verwendet wurden, führt die dateibasierte Routenführung ein zusätzliches Konzept ein, bei dem das Zeichen . im Dateinamen verwendet wird, 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 verwendet werden, um die Routenhierarchie darzustellen, was nützlich sein kann, um mehrere Routen in logische Gruppen zu organisieren und auch die Länge der Dateinamen für große Gruppen tief verschachtelter Routen zu verkürzen.
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> |
Die flache Routenführung gibt Ihnen die Möglichkeit, .s zu verwenden, um Verschachtelungsebenen von Routen zu kennzeichnen.
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 flache Routenstruktur nicht die beste Lösung für Ihr Projekt ist. Deshalb erlaubt Ihnen TanStack Router, sowohl flache als auch Verzeichnisrouten zu mischen, um einen Routenbaum zu erstellen, der das Beste aus beiden 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 flache als auch Verzeichnisrouten können gemischt werden, um einen Routenbaum zu erstellen, der das Beste aus beiden Welten nutzt, wo es sinnvoll ist.
Tipp
Wenn Sie feststellen, dass die Standardstruktur der dateibasierten Routenführung nicht Ihren Anforderungen entspricht, können Sie jederzeit virtuelle Routenführung verwenden, um die Quelle Ihrer Routen zu steuern und dennoch die hervorragenden Leistungsvorteile der dateibasierten Routenführung zu nutzen.
Um mit der dateibasierten Routenführung zu beginnen, müssen Sie den Bundler Ihres Projekts so konfigurieren, dass er das TanStack Router Plugin oder die TanStack Router CLI verwendet.
Um dateibasierte Routenführung zu aktivieren, müssen Sie React mit einem unterstützten Bundler verwenden. Prüfen Sie, ob Ihr Bundler in den folgenden Konfigurationsleitfäden aufgeführt ist.
Wenn Sie die dateibasierte Routenführung von TanStack Router über einen der unterstützten Bundler verwenden, **generiert unser Plugin Ihre Routenkonfiguration automatisch während der Entwicklungs- und Build-Prozesse Ihres Bundlers**. 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 keine Sorge! 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.