路由
道格龙(Docusaurus)的路由系统遵循单页应用(SPA)的约定:一个路由,一个组件。在本章节中,我们将首先探讨三个内容插件(文档、博客和页面)内部的路由机制,然后进一步讨论其底层的路由系统。
内容插件中的路由
每个内容插件都提供一个 routeBasePath
选项。它定义了插件将其路由附加到的位置。默认情况下,文档插件将其路由置于 /docs
下;博客插件置于 /blog
下;而页面插件则置于 /
下。你可以这样理解路由结构:
任何路由都会对照这个嵌套的路由配置进行匹配,直到找到一个合适的匹配项。例如,当给定一个路由 /docs/configuration
时,道格龙(Docusaurus)首先进入 /docs
分支,然后在文档插件创建的子路由中进行搜索。
更改 routeBasePath
可以有效地改变你网站的路由结构。例如,在纯文档模式中,我们提到为文档配置 routeBasePath: '/'
意味着文档插件创建的所有路由都不会有 /docs
前缀,但这并不妨碍你拥有像 /blog
这样由其他插件创建的更多子路由。
接下来,让我们看看这三个插件是如何构建它们各自的"子路由盒子"的。
页面路由
页面路由非常直接:文件路径直接映射到 URL,没有其他自定义方式。更多信息请参阅页面文档。
Markdown 页面使用的组件是 @theme/MDXPage
。React 页面则直接用作路由的组件。
博客路由
博客会创建以下路由:
- 博文列表页:
/
,/page/2
,/page/3
...- 该路由可通过
pageBasePath
选项进行自定义。 - 组件是
@theme/BlogListPage
。
- 该路由可通过
- 博文页:
/2021/11/21/algolia-docsearch-migration
,/2021/05/12/announcing-docusaurus-two-beta
...- 由每篇 Markdown 博文生成。
- 路由可通过
slug
front matter 进行完全自定义。 - 组件是
@theme/BlogPostPage
。