DokuVerstehen Sie das Modell
Routenführung
Nexy verfügt über zwei native Router. Sie können eine pro Funktion auswählen; Sie können in derselben Anwendung koexistieren.
Nicht sicher? Verwenden Sie dateibasiertes Routing. Es deckt Seiten und API-Endpunkte ohne Einrichtung ab. Fügen Sie den modularen Router hinzu, wenn ein Backend Controller, injizierte Dienste oder Wachen benötigt.
| Sie bauen | Benutzen |
|---|---|
| Seiten, Inhalte, eine Site mit einigen Endpunkten | Dateibasiert |
| Eine große API mit Diensten, die auf allen Routen gemeinsam genutzt werden | Modular |
| Beides: Seiten für Menschen, eine strukturierte API für Maschinen | Dateibasiert und modular zusammen |
src/routes/index.nexy/src/routes/about.nexy/aboutsrc/routes/blog/index.nexy/blogsrc/routes/blog/[slug].nexy/blog/:slugsrc/routes/(app)/dashboard.nexy/dashboardsrc/routes/api/users.py/api/users(GET, POST, …)/@Controller("/about") class AboutController/about/@Controller("/api/users") class UserController/api/users/(get, post, …)lists the controllersuseRouter = AppModule nexyconfig.pymounts the module| Router | Quelle | Aktiviert von |
|---|---|---|
| Dateibasiert (FBR) | jede Datei unter src/routes/ |
Das Verzeichnis existiert |
| Modular | Controller und Module | useRouter = AppModule in nexyconfig.py |
FBR wird immer dann gescannt, wenn src/routes/ vorhanden ist, auch wenn ein modularer Router montiert ist.
Zusammenleben und Prioritäten
Sie können FBR, Modular und benutzerdefinierte Integration kombinieren. Nexy registriert diese Routen in der Reihenfolge, in der sie entdeckt werden. Wenn zwei Router denselben URL-Pfad definieren, gewinnt der zuerst registrierte.
Hinweis: Nexy bietet derzeit keine Diagnose für URL-Kollisionen; Die erste Route, die einen Pfad beansprucht, überschattet einfach die anderen.
Dateibasiertes Routing
Eine Route ist eine Datei. Die URL ist der Pfad unter src/routes/, abzüglich der Erweiterung. Wie Next.js befindet sich ein Projekt in einem von zwei Modi, ausgewählt mit useCSR:
useCSR = False (Standard) |
useCSR = True |
|
|---|---|---|
| Seiten | .nexy, .md, .mdx |
Dateien Ihres Client-Frameworks |
| Root-Layout | layout.nexy |
layout.tsx (React) |
| Client-Komponenten | erlaubt, als Inseln innerhalb von Seiten | die Seiten selbst |
| API-Routen | .py |
.py |
Siehe Servermodus und Clientmodus.
| Abschnitt | Was es abdeckt |
|---|---|
| fbr/pages | Seiten, dynamische Routen und Routengruppen |
| fbr/layouts | layout.nexy, layout.tsx, layout.vue, layout.svelte |
| fbr/handlers | .py Routenhandler, Validierung und Fehler |
| fbr/Abhängigkeiten | dependencies.py und Wächter, geerbt vom Verzeichnis |
| fbr/middleware | middleware.py, geerbt vom Verzeichnis |
| fbr/errors | notfound.nexy, errors.nexy, JSON-Fehler |
| fbr/navigation | Verlinkung, Client-Navigation, Hooks |
| fbr/realtime | WebSocket Handler |
| fbr/Vererbung | wie Layouts, Abhängigkeiten und Fehlerseiten erben |
Modulares Routing
Controller, Module und Abhängigkeitsinjektion im Stil von NestJS. Siehe Modulares Routing und Nexy und NestJS.
| Abschnitt | Was es abdeckt |
|---|---|
| modular | @Controller, @Module, Importe und Exporte |
| Modular/Abhängigkeitsinjektion | @Injectable, Bereiche und der Container |
| modular/guards-and-metadata | @UseGuard, @UseResponse und die OpenAPI-Metadaten |
Ein Controller gibt eine .nexy-Ansicht mit useViews zurück und übergibt sie manuell an sein Layout: Es gibt kein layout.nexy, das vom Ordner angewendet wird.
Benutzerdefinierte Integration
Sie können auch einen vorhandenen FastAPI Router in Ihr Nexy-Projekt integrieren. Siehe Benutzerdefinierte Routing-Integration.