Markdown
2025/03/05
3 分钟阅读

Markdown

如何撰写文档

介绍

Fumadocs 为 MDX(一种标记语言)提供了许多有用的扩展。以下是 Fumadocs UI 默认 MDX 语法的简要介绍。

MDX 不是 Fumadocs 唯一支持的格式。实际上,您可以使用任何渲染器,如 next-mdx-remote 或 CMS。

Markdown

我们使用 GFM(GitHub 风格的 Markdown),这是 Markdown(CommonMark)的超集。 参见 GFM 规范

# Heading
 
## Heading
 
### Heading
 
#### Heading
 
Hello World, **Bold**, _Italic_, ~~Hidden~~
 
```js
console.log('Hello World');
```
 
1. First
2. Second
3. Third
 
- Item 1
- Item 2
 
> Quote here
 
![alt](/image.png)
 
| Table | Description |
| ----- | ----------- |
| Hello | World       |

自动链接

内部链接使用 next/link 组件,允许预取并避免硬重载。

外部链接将获得默认的 rel="noreferrer noopener" target="_blank" 属性以增强安全性。

[My Link](https://github.github.com/gfm)
 
This also works: https://github.github.com/gfm.

MDX

MDX 是 Markdown 的超集,支持 JSX 语法。 它允许您导入组件,并直接在文档中使用它们,甚至导出值。

import { Component } from './component';
 
<Component name="Hello" />

参见 MDX 语法 了解更多信息。

卡片

对于添加链接很有用,默认包含。

<Cards>
  <Card
    href="https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating"
    title="Fetching, Caching, and Revalidating"
  >
    Learn more about caching in Next.js
  </Card>
</Cards>

图标

您可以为卡片指定图标。

import { HomeIcon } from 'lucide-react';
 
<Cards>
  <Card icon={<HomeIcon />} href="/" title="Home">
    Go back to home
  </Card>
</Cards>

无 href

<Cards>
  <Card title="Fetching, Caching, and Revalidating">
    Learn more about `fetch` in Next.js.
  </Card>
</Cards>

Fetching, Caching, and Revalidating

Learn more about fetch in Next.js.

提示框

对于添加提示/警告很有用,默认包含。

<Callout>Hello World</Callout>
Hello World

标题

指定提示框标题。

<Callout title="Title">Hello World</Callout>

Title

Hello World

类型

您可以指定提示框的类型。

  • info(默认)
  • warn
  • error
<Callout title="Title" type="error">
  Hello World
</Callout>

Title

Hello World

自定义组件

参见所有 MDX 组件和可用选项

标题

每个标题会自动应用锚点,它会清理空格等无效字符。(例如,Hello World 变为 hello-world

# Hello `World`

目录设置

目录 (TOC) 将基于标题生成,您还可以自定义标题的效果:

# Heading [!toc]
 
This heading will be hidden from TOC.
 
# Another Heading [toc]
 
This heading will **only** be visible in TOC, you can use it to add additional TOC items.
Like headings rendered in a React component:
 
<MyComp />

自定义锚点

您可以添加 [#slug] 来自定义标题锚点。

# heading [#my-heading-id]

您也可以将其与目录设置链接起来,例如:

# heading [toc] [#my-heading-id]

要将人们链接到特定标题,请将标题 ID 添加到哈希片段:/page#my-heading-id

前言

我们支持 YAML 前言。这是一种指定文档常见信息(例如标题)的方式。 将其放在文档顶部。

---
title: Hello World
---
 
## Title

有关前言可用属性的列表,请参见页面约定

代码块

默认使用 Rehype Code 支持语法高亮。

```js
console.log('Hello World');
```

您可以为代码块添加标题。

```js title="My Title"
console.log('Hello World');
```

高亮行

```tsx
<div>Hello World</div>  // [\!code highlight]
<div>Hello World</div>
<div>Goodbye</div>
<div>Hello World</div>
```

高亮单词

您可以通过添加 [!code word:<match>] 来高亮特定单词。

```js
// [\!code word:config]
const config = {
  reactStrictMode: true,
};
```

差异

```ts
console.log('hewwo'); // [\!code --]
console.log('hello'); // [\!code ++]
```
console.log('hewwo'); 
console.log('hello'); 

标签组

您可以使用 <Tab /> 组件与代码块一起使用。

import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
 
<Tabs items={['Tab 1', 'Tab 2']}>
  <Tab value='Tab 1'>
    ```ts
    console.log('A');
    ```
  </Tab>
  <Tab value='Tab 2'>
    ```ts
    console.log('B');
    ```
  </Tab>
</Tabs>

注意,您可以在 MDX 文件中添加 MDX 组件,而不必导入它们。

console.log('A');

使用 Typescript Twoslash

编写带有悬停类型信息和检测到类型错误的 Typescript 代码块。

默认情况下未启用。参见 Twoslash

图片

所有内置内容源都能正确处理图片。 图片会自动为 next/image 优化。

![Image](/image.png)

可选功能

一些您可以启用的可选插件。

作者

avatar for Mkdirs模板
Mkdirs模板

加入我们的社区

订阅邮件列表,及时获取最新消息和更新