基于文件的路由要求您遵循一些简单的文件命名约定,以确保路由能够正确生成。这些约定所实现的核心概念在 路由树与嵌套 指南中有详细介绍。
| 特性 | 描述 |
|---|---|
__root.tsx | 根路由文件必须命名为 __root.tsx,并且必须放置在配置的 routesDirectory(路由目录)的根部。 |
. 分隔符 | 路由可以使用 . 字符来表示嵌套路由。例如,blog.post 将生成为 blog 的子路由。 |
$ 标记 | 带有 $ 标记的路由段是参数化的,它会从 URL 路径名中提取值作为路由参数 (param)。 |
_ 前缀 | 带有 _ 前缀的路由段被视为无路径布局路由 (Pathless Layout Routes),在将子路由与 URL 路径名进行匹配时不会使用该段。 |
_ 后缀 | 带有 _ 后缀的路由段会将该路由从任何父路由的嵌套中排除。 |
- 前缀 | 带有 - 前缀的文件和文件夹将被排除在路由树之外。它们不会被添加到 routeTree.gen.ts 文件中,可用于在路由文件夹中同地协作 (colocate) 逻辑。 |
(folder) 模式 | 符合此模式的文件夹被视为路由组 (Route Group),这可以防止该文件夹名称被包含在路由的 URL 路径中。 |
[x] 转义 | 方括号用于转义文件名中原本具有路由含义的特殊字符。例如,script[.]js.tsx 会变成 /script.js,而 api[.]v1.tsx 会变成 /api.v1。 |
index 标记 | 以 index 标记结尾(在任何文件扩展名之前)的路由段,将在 URL 路径名与父路由完全匹配时匹配父路由。这可以通过 indexToken 配置选项进行自定义。 |
.route.tsx 文件类型 | 当使用目录组织路由时,可以使用 route 后缀在目录路径处创建路由文件。例如,blog.post.route.tsx 或 blog/post/route.tsx 可以作为 /blog/post 路由的文件。 |
💡 请记住: 项目的文件命名约定可能会受到所配置的 选项 的影响。
动态路径参数 (Dynamic Path Params)¶
动态路径参数可以同时用于扁平路由和目录路由,以创建能够匹配 URL 路径中动态部分的路由。动态路径参数在文件名中由 $ 字符表示:
| 文件名 | 路由路径 | 组件输出 |
|---|---|---|
| ... | ... | ... |
ʦ posts.$postId.tsx | /posts/$postId | <Root><Posts><Post> |
我们将在 路径参数 (Path Params) 指南中学习更多关于动态路径参数的内容。
无路径路由 (Pathless Routes)¶
无路径路由通过逻辑或组件包裹子路由,而无需对应的 URL 路径。非路径路由在文件名中由 _ 字符表示:
| 文件名 | 路由路径 | 组件输出 |
|---|---|---|
ʦ _app.tsx | ||
ʦ _app.a.tsx | /a | <Root><App><A> |
ʦ _app.b.tsx | /b | <Root><App><B> |
要了解更多关于无路径路由的信息,请参阅 路由概念 - 无路径布局路由 指南。