DokuVerstehen Sie das Modell
Projektstruktur
Jede Datei in einem Nexy-Projekt hat eine Aufgabe, und wohin sie geht, hängt vom Router ab: src/routes/ für dateibasiertes Routing, src/apps/ für den modularen Router.
Top-Niveau
nexy new)Um einen Ordner auszuwählen, fragen Sie nach der Datei:
- Etwas, das der Browser öffnen kann – eine Route:
src/routes/. - Ein Stück, das von mehreren Routen verwendet wird – eine Komponente oder ein Modul:
src/components/,src/. - Eine Datei wurde so bereitgestellt, wie sie ist -
public/. - Generiert -
__nexy__/; Bearbeiten Sie es niemals.
nexy new)Um einen Ordner auszuwählen, fragen Sie nach der Datei:
- Eine URL – eine Methode eines Controllers in
src/apps/, registriert von seinem Modul. - Eine Seite – eine
.nexy-Ansicht neben ihrem Controller, zurückgegeben mituseViews. - Ein von mehreren Ansichten verwendetes Stück -
src/components/. - Eine Datei wurde so bereitgestellt, wie sie ist -
public/. - Erzeugt -
__nexy__/; Bearbeiten Sie es niemals.
nexy new)Um einen Ordner auszuwählen, fragen Sie nach der Datei:
- Eine Route der mitgelieferten App – wo sie bereits ist, hier
src/legacy/. - Eine neue Seite oder Route -
src/routes/, neben dem enthaltenen Router. - Eine Datei wurde so bereitgestellt, wie sie ist -
public/. - Erzeugt -
__nexy__/; Bearbeiten Sie es niemals.
src/routes/
Jede Datei wird zu einer Route, mit Ausnahme der unten aufgeführten reservierten Namen. Der Dateipfad abzüglich der Erweiterung ist die URL – siehe dateibasiertes Routing.
| Datei | Rolle |
|---|---|
layout.nexy |
Umschließt Geschwister- und Kinderseiten |
errors.nexy |
500 Seiten für das Verzeichnis |
notfound.nexy |
404-Seite für das Verzeichnis |
dependencies.py |
freigegebene FastAPI Abhängigkeiten für das Verzeichnis |
__init__.py |
Python Paketmarkierung |
loading.nexy |
reserviert – von Routen ausgeschlossen, hat aber noch keinen Laufzeiteffekt |
Jeder Seitenname existiert auch pro Framework. Wenn react() konfiguriert ist, werden layout.jsx und layout.tsx genau wie layout.nexy reserviert. Die Listen sind in nexy/core/config.py (LAYOUT_FILE_NAMES, ERROR_FILE_NAMES, NOTFOUND_FILE_NAMES, LOADING_FILE_NAMES) erstellt.
src/apps/
Ein Controller antwortet auf URLs, ein Modul gruppiert Controller und Anbieter und das Root-Modul wird mit useRouter in nexyconfig.py gemountet:
from nexy.decorators import Controllerfrom nexy.hooks import useViews LAYOUT = "src/apps/layout.nexy" @Controller()class AppController: async def get(self): return useViews(LAYOUT, context={"children": useViews("src/apps/app_view.nexy")})from nexy.decorators import Module from .app_controller import AppController @Module()class AppModule: controllers = [AppController]from nexy.core.models import NexyConfigModel from src.apps.app_module import AppModule class NexyConfig(NexyConfigModel): useRouter = AppModule useAliases = {"@": "src"} # the views import @/components/...Keine Datei in src/apps/ ist eine Route anhand ihres Namens: Nur die Controller, die ein Modul auflistet, antworten. Siehe modulares Routing.
public/
Hier werden Dateien aus dem Stammverzeichnis der Website bereitgestellt: /favicon.ico, /robots.txt, Bilder, Schriftarten.
__nexy__/
Erstellt von nx build (und von nx dev für die benötigten Teile). Es enthält:
- die kompilierten
.nexy-Dateien als Python-Paket (__nexy__/src/...); - die generierten Client-Einstiegspunkte (
main.ts,vite.ts,*.auto.ts); client/nach einem Vite Build – Assets, Manifest, vorgerendertes HTML;build-cache.json.
Behandeln Sie das gesamte Verzeichnis als Wegwerfverzeichnis: Löschen Sie es und erstellen Sie es neu. Wenn Sie es manuell bearbeiten, gehen die Änderungen beim nächsten Build verloren. Fügen Sie es zu .gitignore hinzu.
Nächste Schritte
- Dateibasiertes Routing: Wie aus einem Pfad eine URL wird
- Modulares Routing: Controller, Module und Anbieter
- Benutzerdefiniertes Routing: Einbinden eines vorhandenen FastAPI Routers
- Konfiguration: jede Projektoption
- Frontend: Vite, Styling und der Client-Build