ДокументацияПонять модель
Маршрутизация
У Nexy два родных роутера. Вы можете выбрать по одному для каждой функции; они могут сосуществовать в одном приложении.
Не уверен? Используйте маршрутизацию на основе файлов. Она охватывает страницы и конечные точки API без какой-либо настройки. Добавьте модульный маршрутизатор, если серверной части нужны контроллеры, внедренные службы или средства защиты.
| Вы строите | Использование |
|---|---|
| Страницы, контент, сайт с несколькими конечными точками | Файловый |
| Большой API с сервисами, общими для всех маршрутов. | Модульный |
| И то, и другое: страницы для людей, структурированный API для машин. | Файловое и модульное вместе |
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| Маршрутизатор | Источник | Включено |
|---|---|---|
| На основе файлов (FBR) | каждый файл под src/routes/ |
каталог существует |
| Модульный | контроллеры и модули | useRouter = AppModule в nexyconfig.py |
FBR сканируется всякий раз, когда существует src/routes/, даже если установлен модульный маршрутизатор.
Сосуществование и приоритеты
Вы можете комбинировать FBR, модульную и пользовательскую интеграцию. Nexy регистрирует эти маршруты в порядке их обнаружения. Если два маршрутизатора определяют один и тот же путь URL-адреса, побеждает первый зарегистрированный.
Примечание. Nexy в настоящее время не обеспечивает диагностику конфликтов URL-адресов; первый маршрут, претендующий на путь, просто затеняет остальные.
Маршрутизация на основе файлов
Маршрут — это файл. URL-адрес — это его путь в src/routes/ без расширения. Как и Next.js, проект находится в одном из двух режимов, выбранных с помощью useCSR:
useCSR = False (по умолчанию) |
useCSR = True |
|
|---|---|---|
| Страницы | .nexy, .md, .mdx |
файлы вашего клиентского фреймворка |
| Корневая раскладка | layout.nexy |
layout.tsx (React) |
| Клиентские компоненты | разрешено, так как острова внутри страниц | сами страницы |
| API-маршруты | .py |
.py |
См. Режим сервера и режим клиента.
| Раздел | Что он охватывает |
|---|---|
| fbr/страницы | страницы, динамические маршруты и группы маршрутов |
| fbr/макеты | layout.nexy, layout.tsx, layout.vue, layout.svelte |
| fbr/обработчики | .py обработчики маршрутов, проверка и ошибки |
| fbr/зависимости | dependencies.py и охранники, наследуемые каталогом |
| fbr/промежуточное ПО | middleware.py, наследуется каталогом |
| fbr/ошибки | notfound.nexy, errors.nexy, ошибки JSON |
| fbr/навигация | связывание, навигация по клиенту, крючки |
| fbr/в реальном времени | WebSocket обработчики |
| fbr/наследование | как наследуются макеты, зависимости и страницы ошибок |
Модульная маршрутизация
Контроллеры, модули и внедрение зависимостей в стиле NestJS. См. Модульная маршрутизация и Nexy и NestJS.
| Раздел | Что он охватывает |
|---|---|
| модульный | @Controller, @Module, импорт и экспорт |
| модульность/внедрение зависимостей | @Injectable, области видимости и контейнер |
| модульные/защитные и метаданные | @UseGuard, @UseResponse и метаданные OpenAPI |
Контроллер возвращает представление .nexy с помощью useViews и вручную передает его в свой макет: layout.nexy не применяется к папке.
Пользовательская интеграция
Вы также можете интегрировать существующий маршрутизатор FastAPI в свой проект Nexy. См. Интеграция пользовательской маршрутизации.