Docsentender el modelo
Estructura del proyecto
Cada archivo en un proyecto Nexy tiene un trabajo y su destino depende del enrutador: src/routes/ para el enrutamiento basado en archivos, src/apps/ para el enrutador modular.
Nivel superior
nexy new)Para elegir una carpeta, pregunte cuál es el archivo:
- Algo que el navegador puede abrir - una ruta:
src/routes/. - Una pieza utilizada por varias rutas - un componente o un módulo:
src/components/,src/. - Un archivo servido tal como está -
public/. - Generado -
__nexy__/; nunca lo edites.
nexy new)Para elegir una carpeta, pregunte cuál es el archivo:
- Una URL - un método de un controlador en
src/apps/, registrado por su módulo. - Una página - una vista
.nexyjunto a su controlador, devuelta conuseViews. - Una pieza utilizada por varias vistas -
src/components/. - Un archivo servido tal como está -
public/. - Generado -
__nexy__/; nunca lo edites.
nexy new)Para elegir una carpeta, pregunte cuál es el archivo:
- Una ruta de la aplicación incluida - donde ya está, aquí
src/legacy/. - Una nueva página o ruta -
src/routes/, al lado del router incluido. - Un archivo servido tal como está -
public/. - Generado -
__nexy__/; nunca lo edites.
src/routes/
Cada archivo se convierte en una ruta, excepto los nombres reservados a continuación. La ruta del archivo menos la extensión es la URL; consulte enrutamiento basado en archivos.
| Archivo | Rol |
|---|---|
layout.nexy |
envuelve páginas hermanas y secundarias |
errors.nexy |
500 páginas para el directorio. |
notfound.nexy |
Página 404 para el directorio. |
dependencies.py |
dependencias compartidas FastAPI para el directorio |
__init__.py |
Python marcador de paquete |
loading.nexy |
reservado: excluido de las rutas, pero aún no tiene efecto de tiempo de ejecución |
El nombre de cada página también existe por marco. Con react() configurado, layout.jsx y layout.tsx se reservan exactamente igual que layout.nexy. Las listas están construidas en nexy/core/config.py (LAYOUT_FILE_NAMES, ERROR_FILE_NAMES, NOTFOUND_FILE_NAMES, LOADING_FILE_NAMES).
src/apps/
Un controlador responde URL, un módulo agrupa controladores y proveedores, y el módulo raíz se monta con useRouter en nexyconfig.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")})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/...Ningún archivo en src/apps/ es una ruta por su nombre: solo los controladores que enumera un módulo responden. Consulte enrutamiento modular.
public/
Los archivos aquí se sirven desde la raíz del sitio: /favicon.ico, /robots.txt, imágenes, fuentes.
__nexy__/
Generado por nx build (y por nx dev para las piezas que necesita). Contiene:
- los archivos
.nexycompilados, como un paquete Python (__nexy__/src/...); - los puntos de entrada del cliente generados (
main.ts,vite.ts,*.auto.ts); client/después de una compilación Vite - recursos, manifiesto, HTML prerenderizado;build-cache.json.
Trate todo el directorio como desechable: elimínelo, reconstrúyalo. Al editarlo a mano, se pierde el cambio en la siguiente compilación. Agréguelo a .gitignore.
Próximos pasos
- Enrutamiento basado en archivos: cómo una ruta se convierte en una URL
- Enrutamiento modular: controladores, módulos y proveedores
- Enrutamiento personalizado: incluye un enrutador FastAPI existente
- Configuración: cada opción del proyecto
- Frontend: Vite, estilo y compilación del cliente