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

my-app/
src/
routes/every file is a route
index.nexy→ /
layout.nexyshared layout, not a route
api/hello.py→ /api/hello
components/imported components (a convention, not enforced)
globale.cssglobal styles (created by nexy new)
public/served at /
nexyconfig.pyproject configuration
pyproject.toml
package.jsononly with a client framework
vite.config.tsonly with a client framework
__nexy__/build output - generated, never edited

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.
my-app/
src/
apps/controllers, modules and their views
app_module.pythe root module, given to useRouter
app_controller.py
app_view.nexya view a controller returns
layout.nexythe frame the controllers pass their view to
users/one folder per feature: controller, module, service, model
components/imported components (a convention, not enforced)
globale.cssglobal styles (created by nexy new)
public/served at /
nexyconfig.pyproject configuration: useRouter = AppModule
pyproject.toml
package.jsononly with a client framework
vite.config.tsonly with a client framework
__nexy__/build output - generated, never edited

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 mit useViews.
  • Ein von mehreren Ansichten verwendetes Stück - src/components/.
  • Eine Datei wurde so bereitgestellt, wie sie ist - public/.
  • Erzeugt - __nexy__/; Bearbeiten Sie es niemals.
my-app/
src/
legacy/the FastAPI router you include
api.pyrouter = APIRouter(prefix="/api")
routes/pages and route files, served next to it
index.nexy→ /
components/imported components (a convention, not enforced)
globale.cssglobal styles (created by nexy new)
public/served at /
nexyconfig.pyproject configuration: useRouter = router
pyproject.toml
package.jsononly with a client framework
vite.config.tsonly with a client framework
__nexy__/build output - generated, never edited

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:

src/apps/app_controller.py
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")})
src/apps/app_module.py
from nexy.decorators import Module from .app_controller import AppController  @Module()class AppModule:    controllers = [AppController]
nexyconfig.py
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

Auf GitHub bearbeiten

Enter öffnet das Ergebnis, Esc schließt.