文档文件约定
文件约定
src/routes/ 下的保留名称和规则。
路线文件
| 文件 | 成为 |
|---|---|
index.nexy、index.md、index.mdx、index.py |
其目录的路径 |
about.nexy |
/about |
[slug].nexy |
动态段 {slug} |
[...path].nexy |
包罗万象 {path:path} |
(group)/page.nexy |
/page:该组未出现在 URL 中 |
name.py |
API 处理程序;函数名 GET, POST, ... 是方法 |
name.tsx、.jsx、.vue、.svelte |
使用 useFF 启用框架时的客户端路由 |
src/routes/
index.nexy/
about.nexy/about
(marketing)/
pricing.nexy/pricing
blog/
index.md/blog
[slug].nexy/blog/{slug}
docs/
[...path].nexy/docs/{path:path}
api/
users.pyGET /api/users, POST /api/users
async def GET(): return {"users": []} async def POST(): return {"created": True}保留文件
| 文件 | 角色 | 详情 |
|---|---|---|
layout.nexy |
服务器模式:包装其下面的每个页面;根目录拥有 HTML 文档 | 布局.nexy |
layout.tsx |
客户端模式(React):根拥有 HTML 文档,嵌套包含页面 | 布局.tsx |
layout.vue,layout.svelte |
客户端模式:嵌套布局 | 布局.vue, 布局.svelte |
notfound.nexy |
其目录的 404 页面 | 错误页面 |
errors.nexy |
目录 500 页 | 错误页面 |
forbidden.nexy |
其目录的 403 页面 | 每个文件夹的错误页 |
unauthorized.nexy |
其目录的 401 页面 | 每个文件夹的错误页 |
loading.nexy |
保留;还没有运行时效果 | 错误页面 |
middleware.py |
async def middleware(request, call_next) 包装目录及以下目录的请求 |
中间件文件 |
dependencies.py |
应用于目录及其子目录的 dependencies = [fn, ...] 列表 |
依赖项 |
__init__.py |
Python 包标记 | |
favicon.ico |
服务于 /favicon.ico |
useLayoutExtensions、useNotFoundExtensions、useErrorsExtensions、useForbiddenExtensions、useUnauthorizedExtensions 和 useLoadingExtensions 为这些名称保留更多扩展名。请参阅配置。
表的两个 Python 文件并排位于一个文件夹中:
from nexy.http import Request async def middleware(request: Request, call_next): response = await call_next(request) response.headers["x-admin"] = "1" return responsefrom nexy.http import Header, HTTPException def require_admin(x_role: str = Header(...)) -> None: if x_role != "admin": raise HTTPException(status_code=403, detail="Admins only") dependencies = [require_admin]以及一个回答其文件夹 404 的页面:
<h1>Page not found</h1><p><a href="/">Back home</a></p>忽略的文件
- 以
_或.开头的文件或文件夹:将其用于部分、草稿和助手。 - 扩展名对于项目无效的文件:将跳过该文件并显示警告。
src/routes/
index.nexy/
_card.nexyignored: a partial the pages include
_helpers/ignored, with everything inside
format.py
.draft.nexyignored: a draft
每个 URL 一个文件
解析为同一 URL 的两个文件都会注册。请勿将 blog.nexy 放在 blog/index.nexy 旁边。
src/routes/
blog.nexy/blog
blog/
index.nexy/blog as well: keep only one of the two
外面 src/routes/
| 文件夹 | 目的 |
|---|---|
src/components/ |
页面导入的组件;从不路由 |
src/apps/ |
模块化路由器 的控制器和模块 |
public/ |
静态文件,位于根目录:public/logo.svg 是 /logo.svg(也在 /public/ 下) |
__nexy__/ |
生成的输出;不承诺 |
my-app/
nexyconfig.py
public/
logo.svg/logo.svg
src/
routes/the routes
components/
Counter.tsximported by pages, never served on its own
apps/the modular router, when you use it
__nexy__/generated: add it to .gitignore