跳转到主要内容
软件开发的核心原则之一是 DRY(Don’t Repeat Yourself,勿重复造轮子),这同样适用于文档。如果你发现在多个位置重复相同内容,就应创建自定义代码片段,以保持内容同步。

创建自定义代码片段

前置条件:必须在 snippets 目录中创建代码片段文件,导入才能生效。 snippets 目录中的任何页面都会被视为代码片段,不会被渲染为独立页面。若你想从该代码片段创建一个独立页面,请将该代码片段导入到另一个文件中,并以组件方式调用。

默认导出

  1. 在代码片段文件中添加需要复用的内容。你也可以可选地添加变量,在导入代码片段时通过 props 进行填充。在此示例中,我们的变量是 word。
snippets/my-snippet.mdx
Hello world这是我想在多个页面复用的内容
  1. 将代码片段导入到目标文件中。
目标文件.mdx
---
title: 我的标题
description: 我的说明
---

import MySnippet from '/snippets/path/to/my-snippet.mdx';

## 标题

这里是占位文本用于展示排版效果

<MySnippet/>

使用变量导出

  1. 你也可以添加变量,并在导入该代码片段时通过 props 传入值。在此示例中,我们的变量是 word。
snippets/my-snippet.mdx
我今天的关键词是 {word}。
  1. 使用该变量将代码片段导入到目标文件中。该属性会根据你的配置自动填充。
destination-file.mdx
---
title: 我的标题
description: 我的说明
---

import MySnippet from '/snippets/path/to/my-snippet.mdx';

## 标题

这是用于占位的示例文本

<MySnippet word="bananas" />

可复用变量

  1. 从代码片段文件中导出一个变量:
snippets/path/to/custom-variables.mdx
export const myName = 'my name';

export const myObject = { fruit: 'strawberries' };
  1. 在目标文件中导入该代码片段,并使用该变量:
destination-file.mdx
---
title: 我的标题
description: 我的描述
---

import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';

你好我叫 {myName},我喜欢 {myObject.fruit}。

JSX 代码片段

  1. 从代码片段文件中导出一个 JSX 组件。(参见 React 组件 了解更多):
snippets/my-jsx-snippet.jsx
export const MyJSXSnippet = () => {
  return (
    <div>
      <h1>你好,世界!</h1>
    </div>
  )
}
重要:在创建 JSX 代码片段时,请使用箭头函数语法(=>),不要使用函数声明。在此场景下不支持 function 关键字。
  1. 在目标文件中导入该代码片段并使用该组件:
destination-file.mdx
---
title: 我的标题
description: 我的说明
---

import { MyJSXSnippet } from '/snippets/my-jsx-snippet.jsx';

<MyJSXSnippet />