UNPKG

@modern-js/doc-tools-doc

Version:

Website for @modern-js/doc-tools

83 lines (60 loc) 2.37 kB
# 约定式路由 ## 什么是约定式路由 Modern.js Doc 使用的是文件系统路由,页面的文件路径会简单的映射为路由路径,这样会让整个项目的路由非常直观。 例如,如果在 `docs` 目录中有一个名为 `foo.md` 的文件,则该文件的路由路径将是 `/foo`## 映射规则 Modern.js Doc 会自动扫描根目录和所有子目录,并将文件路径映射到路由路径。例如,如果你有以下的文件结构: ```bash docs ├── foo │ └── bar.md └── foo.md ``` 那么 `bar.md` 的路由路径会是 `/foo/bar``foo.md` 的路由路径会是 `/foo`。 具体映射规则如下: | 文件路径 | 路由路径 | | --------------- | ---------- | | `index.md` | `/` | | `/foo.md` | `/foo` | | `/foo/bar.md` | `/foo/bar` | | `/zoo/index.md` | `/zoo` | ## 组件路由 在约定式路由中,除了`.md(x)`文件,还可以使用 `.tsx` 文件作为路由组件,在 `.tsx` 中默认导出一个组件,该组件会被自动注册到路由中。例如: ```tsx title="foo.tsx" export default () => { return <div>foo</div>; }; ``` 当然,如果你想要定制布局,可以添加一个导出,声明布局类型,例如: ```tsx title="foo.tsx" export const frontmatter = { // 声明布局类型 // 这里的 custom 布局中不会出现侧边栏 pageType: 'custom', }; ``` 各个 pageType 的含义详情请参考[API 文档](/api/config/config-frontmatter#pagetype)。 ## 自定义行为 如果要自定义路由行为,可以使用配置文件中的 `route` 字段。例如: ```ts title="modern.config.ts" import { defineConfig } from '@modern-js/doc-tools'; export default defineConfig({ route: { // These files will be excluded from the routing (support glob pattern) exclude: ['component/**/*'] // These files will be included in the routing (support glob pattern) include: ['other-dir/**/*'], } }); ``` ## 最佳实践 我们推荐你将文档文件放在 `docs` 目录下,这样可以让你的项目更加清晰。而对于非文档内容,比如自定义组件、工具函数等,可以放到 `docs` 目录之外进行维护。比如: ```bash docs └── foo.mdx src ├── components │ └── CustomComponent.tsx └── utils └── utils.ts ```