ДокументацияПонять модель
Структура проекта
Каждый файл в проекте Nexy выполняет одно задание, и его расположение зависит от маршрутизатора: src/routes/ для файловой маршрутизации, src/apps/ для модульного маршрутизатора.
Верхний уровень
nexy new)Чтобы выбрать папку, спросите, что это за файл:
- Что-то, что браузер может открыть — маршрут:
src/routes/. - Кусок, используемый несколькими маршрутами — компонент или модуль:
src/components/,src/. - Файл использовался как есть -
public/. - Сгенерировано -
__nexy__/; никогда не редактируйте его.
nexy new)Чтобы выбрать папку, спросите, что это за файл:
- URL — метод контроллера в
src/apps/, зарегистрированный его модулем. - Страница — представление
.nexyрядом с его контроллером, возвращаемое с помощьюuseViews. - Фрагмент, использованный в нескольких представлениях -
src/components/. - Файл использовался как есть -
public/. - Сгенерировано -
__nexy__/; никогда не редактируйте его.
nexy new)Чтобы выбрать папку, спросите, что это за файл:
- Маршрут включенного приложения - там, где оно уже есть, здесь
src/legacy/. - Новая страница или маршрут -
src/routes/, рядом с включенным роутером. - Файл использовался как есть -
public/. - Сгенерировано -
__nexy__/; никогда не редактируйте его.
src/routes/
Каждый файл становится маршрутом, за исключением зарезервированных имен, указанных ниже. Путь к файлу без расширения представляет собой URL-адрес — см. маршрутизация на основе файлов.
| Файл | Роль |
|---|---|
layout.nexy |
оборачивает родственные и дочерние страницы |
errors.nexy |
500 страниц для каталога |
notfound.nexy |
Страница 404 для каталога |
dependencies.py |
общие FastAPI зависимости для каталога |
__init__.py |
Python маркер пакета |
loading.nexy |
зарезервировано — исключено из маршрутов, но пока не имеет эффекта во время выполнения |
Каждое имя страницы также существует для каждой платформы. При настройке react() layout.jsx и layout.tsx зарезервированы точно так же, как layout.nexy. Списки строятся в nexy/core/config.py (LAYOUT_FILE_NAMES, ERROR_FILE_NAMES, NOTFOUND_FILE_NAMES, LOADING_FILE_NAMES).
src/apps/
Контроллер отвечает на URL-адреса, модуль группирует контроллеры и провайдеры, а корневой модуль монтируется с помощью useRouter в 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/...Ни один файл в src/apps/ не является маршрутом по своему имени: отвечают только контроллеры, перечисленные в модуле. См. модульная маршрутизация.
public/
Здесь подаются файлы из корня сайта: /favicon.ico, /robots.txt, изображения, шрифты.
__nexy__/
Генерируется nx build (и nx dev для необходимых частей). Он содержит:
- скомпилированные файлы
.nexyв виде пакета Python (__nexy__/src/...); - сгенерированные точки входа клиента (
main.ts,vite.ts,*.auto.ts); client/после сборки Vite — ресурсы, манифест, предварительно обработанный HTML;build-cache.json.
Относитесь ко всему каталогу как к одноразовому: удалите его, создайте заново. Редактирование вручную приведет к потере изменений в следующей сборке. Добавьте его в .gitignore.
Следующие шаги
- Маршрутизация на основе файлов: как путь становится URL-адресом
- Модульная маршрутизация: контроллеры, модули и провайдеры
- Пользовательская маршрутизация: включите существующий маршрутизатор FastAPI
- Конфигурация: каждый вариант проекта.
- Интерфейс: Vite, стиль и сборка клиента