跳到主要内容

Markdown 功能

Docusaurus 使用 Markdown 作为其主要内容创作格式。

了解 Markdown

Docusaurus 使用现代工具来帮助您创建 交互式文档

MDX编译器将 Markdown 文件转换为 React 组件,并允许您在 Markdown 内容中使用 JSX。这使您可以轻松地在内容中插入 React 组件,并创造令人愉悦的学习体验。

使用 MDX Playground

MDX playground 是您新的好朋友!

它是一个非常有用的调试工具,它显示了 MDX 编译器如何将 Markdown 转换为 React。

选项: 选择正确的格式(MDX 或 CommonMark)以及 Docusaurus 使用的以下插件:remark-gfmremark-directiverehype-raw

MDX 与 CommonMark

Docusaurus 使用 MDX 编译器将 .md.mdx 文件编译成 React 组件,但是 语法解释可能因您的设置而异

MDX 编译器支持 两种格式

  • MDX 格式 : 一个强大的解析器,允许使用 JSX
  • CommonMark 格式 : 一个符合标准的 Markdown 解析器,不允许使用 JSX

默认情况下, Docusaurus v3 出于历史原因对所有文件(包括 .md 文件)使用 MDX 格式

可以使用 siteConfig.markdown.format 设置或mdx.format: md前置 matter 选择加入 CommonMark

如何使用 CommonMark

如果您计划使用 CommonMark,我们建议使用 siteConfig.markdown.format: 'detect' 设置。合适的格式将根据文件扩展名自动选择:

  • .md 文件将使用 CommonMark 格式
  • .mdx 文件将使用 MDX 格式
实验性 CommonMark 支持

CommonMark 支持是 实验性 的,目前有一些 限制

标准功能

Markdown 是一种语法,使您可以以可读的语法编写格式化内容。

### 我的文档章节

带有某些 **粗体** 文本、某些_斜体_文本和 [链接](/) 的 Hello world 消息

![img alt](/img/docusaurus.png)
http://localhost:3000

我的文档章节

带有某些 粗体 文本、某些_斜体_文本和 链接 的 Hello world 消息

img alt

Markdown 是声明式的

有些人可能会假设 Markdown 和 HTML 之间存在一对一的关联,例如,! [Preview](/img/docusaurus.png) 将始终变为 <img src="/img/docusaurus.png" alt="Preview" />,按原样。但是,情况并非如此

Markdown 语法 ! [message](url) 只声明性地告诉 Docusaurus 需要在此处插入图像,但我们可能会执行其他操作,例如将 文件路径转换为 URL 路径 ,因此生成的标记可能与其他 Markdown 渲染器的输出不同,或者与等效 JSX/HTML 代码的简单手工转录不同。

一般来说,您应该只假设标记的_语义_(``` 围栏成为 代码块> 成为 引用 等),而不是实际编译后的输出。

前置 matter

前置 matter 用于向 Markdown 文件添加元数据。所有内容插件都有自己的前置 matter 模式,并使用前置 matter 来丰富从内容或其他配置推断出的默认元数据。

前置 matter 提供在文件的顶部,用三个破折号 --- 括起来。内容被解析为 YAML

---
title: 我的文档标题
more_data:
- 可以提供
- 为:对象
或:数组
---
信息

每个官方插件的 API 文档列出了支持的属性:

增强您的前置 matter

使用 Markdown 配置 parseFrontMatter 函数 来提供您自己的前置 matter 解析器,或增强默认解析器。

可以重用默认解析器来将其与您自己的自定义专有逻辑包装在一起。这使得实现方便的前置 matter 转换、快捷方式或与 Docusaurus 插件不支持的前置 matter 使用的外部系统集成成为可能。

docusaurus.config.js
export default {
markdown: {
parseFrontMatter: async (params) => {
// 重用默认解析器
const result = await params.defaultParseFrontMatter(params);

// 处理前置 matter 描述占位符
result.frontMatter.description =
result.frontMatter.description?.replaceAll('{{MY_VAR}}', 'MY_VALUE');

// 创建您自己的前置 matter 快捷方式
if (result.frontMatter.i_do_not_want_docs_pagination) {
result.frontMatter.pagination_prev = null;
result.frontMatter.pagination_next = null;
}

// 重命名来自另一个系统的不受支持的前置 matter
if (result.frontMatter.cms_seo_summary) {
result.frontMatter.description = result.frontMatter.cms_seo_summary;
delete result.frontMatter.cms_seo_summary;
}

return result;
},
},
};

引用

Markdown 引用具有漂亮的样式:

> 易于维护的开源文档网站。
>
> — Docusaurus
http://localhost:3000

易于维护的开源文档网站。

— Docusaurus

详情

Markdown 可以嵌入 HTML 元素,并且 details HTML 元素具有漂亮的样式:

### 详情元素示例

<details>
<summary>切换我!</summary>

这是详细内容

```js
console.log("包括代码块在内的 Markdown 功能可用");
```

您可以在此处使用 Markdown,包括 **粗体**_斜体_文本以及[内联链接](https://docusaurus.io)
<details>
<summary>嵌套切换!里面有一些惊喜……</summary>

😲😲😲😲😲
</details>
</details>
http://localhost:3000

详情元素示例

切换我!

这是详细内容

console.log("包括代码块在内的 Markdown 功能可用");

您可以在此处使用 Markdown,包括 粗体 和_斜体_文本以及内联链接

嵌套切换!里面有一些惊喜……

😲😲😲😲😲

信息

您可能希望将<summary> 保持在一行上。请记住, MDX 为换行符创建额外的 HTML <p> 段落。 如有疑问,请使用 MDX playground 来排除<details> 渲染问题。