约定式路由
什么是约定式路由
Rspress 使用的是文件系统路由,页面的文件路径会简单地映射为路由路径,这样会让整个项目的路由非常直观。
例如,如果在 docs 目录中有一个名为 foo.md 的文件,则该文件的路由路径将是 /foo。
映射规则
Rspress 会自动扫描根目录和所有子目录,并将文件路径映射到路由路径。例如,如果你有以下的文件结构:
那么 bar.md 的路由路径会是 /foo/bar, /foo/index.md 的路由路径会是 /foo/。
具体映射规则如下:
不要出现文件与文件夹同名的情况,会造成路由冲突,例如下面的文件结构是不允许的:
组件路由
在约定式路由中,除了 .md(x) 文件,还可以使用 .tsx 文件作为路由组件,在 .tsx 中默认导出一个组件,该组件会被自动注册到路由中。例如:
当然,如果你想要定制布局,可以添加一个导出,声明布局类型,例如:
各个 pageType 的含义详情请参考 API 文档。
自定义行为
如果要自定义路由行为,可以使用配置文件中的 route 字段。例如:
默认排除 _ 开头的文件
在 docs 目录 中,使用 MDX 片段或 React 组件要通过 route.exclude 配置从路由中排除。为方便使用,我们约定以 "_" 开头的文件会被 route.excludeConvention 默认排除。
你也可以将组件放到 docs 目录以外的相邻目录,例如:
它将被渲染为:
button
这是一段来自 MDX 的文本
最佳实践
我们推荐你将文档文件放在 docs 目录下,这样可以让你的项目更加清晰。而对于非文档内容,比如自定义组件、工具函数等,可以放到 docs 目录之外进行维护,如果放到 docs 目录,需要配合 route.excludes 使用。
如果要将自定义组件、文档片段放在 docs 目录,需要配合 route.excludes 使用,否则这些文件会被自动注册为路由,可能会导致一些意外的问题。
以下是一种文件结构的最佳实践,包含了 MDX 片段和 React 组件、自定义主题、约定式路由、国际化: