MDX 写作指南
MDX 在 Markdown 的基础上允许在文档中直接使用组件,本站所有文档页(src/content/docs/*.mdx)都用它编写。本文介绍基本语法与本站内置的全局组件。
Frontmatter
每个文档页开头用 YAML 定义元信息,title 为必填项,页面标题(H1)由 title 自动生成,正文里不要再重复写 H1。
---
title: 我的页面
description: 一句话简介。
sidebar:
order: 1
---基础语法
MDX 完全兼容 Markdown,标题、代码块、链接、表格等用法与普通 Markdown 一致。
标题层级
正文从 H2 开始,H2 与 H3 会自动进入页面右侧的目录(TOC)。
## 二级标题
### 三级标题代码块
用围栏代码块并标注语言,语法高亮由 Expressive Code 提供。
```js
const name = "Astro";
console.log(`Hello, ${name}!`);
```链接与表格
参考 [Astro 官方文档](https://docs.astro.build)。
| 语法 | 说明 |
|---|---|
| `## H2` | 章节标题,进入 TOC |
| ``` `` `code` `` ``` | 行内代码 |使用组件
MDX 里可以直接写组件标签。组件必须是大驼峰(PascalCase)并注册在 src/components.ts,构建前的校验器会拦截拼写错误并给出提示。
<Aside type="tip" title="提示">
需要调用组件时,直接在正文中书写标签即可。
</Aside>本站注册的全局组件:
Aside
提示框,支持 note / tip / caution / danger 四种类型。
Tabs / TabItem
选项卡,用于并列展示多段内容或示例。
CardGrid / Card
卡片网格,适合罗列特性或入口。
Steps / Step
步骤条,适合展示操作流程。
PackageManagers
包管理器命令,自动按 npm / pnpm / yarn / bun 分页。
Render
按文件引用共享的 partial 内容。
Aside — 提示框
<Aside type="tip" title="标题">
提示内容,支持行内代码 `code` 与**加粗**。
</Aside>note普通说明,tip提示技巧,caution提醒注意,danger危险警告。- 不传
title时使用类型默认标题。
Tabs — 选项卡
<Tabs>
<TabItem label="选项一">
选项一的内容。
</TabItem>
<TabItem label="选项二">
选项二的内容。
</TabItem>
</Tabs>每个 TabItem 必须紧跟在 <Tabs> 内,内容与标签之间保留空行以保证 Markdown 正常解析。
CardGrid / Card — 卡片
<CardGrid>
<Card title="特性" icon="ph:star">
卡片的描述文字。
</Card>
<Card title="另一个特性" icon="ph:rocket">
另一张卡片。
</Card>
</CardGrid>icon 使用 Phosphor 图标,格式为 ph:<glyph>。
Steps / Step — 步骤
<Steps>
<Step title="第一步">
该步骤的操作内容。
</Step>
<Step title="第二步">
另一个步骤。
</Step>
</Steps>PackageManagers — 包管理器命令
<PackageManagers type="add" pkg="astro-icon" />
<PackageManagers type="run" args="dev" />type支持add/create/dlx/exec/install/remove/run。- 生成器自动换算各包管理器的命令,读者可切换 npm / pnpm / yarn / bun。
Render — 引用共享内容
需要复用的片段放在 src/content/partials/,用 <Render> 引用,不要直接 import 其他 .mdx 文件。
<Render file="shared-tips" />图标
需要使用图标时,在文件顶部导入 Icon 组件,再按需使用:
import { Icon } from "astro-icon/components";
<Icon name="ph:rocket" class="w-4 h-4" />写作规范
- 标题层级从 H2 开始,避免跳过层级。
- 长段落拆分为短段落 + 列表,提升可读性。
- 代码块标注语言;行内代码使用反引号包裹。
- 涉及流程用
<Steps>,并列示例用<Tabs>,要点罗列用<CardGrid>。 - 新增页面后运行
pnpm build,确认无 schema 或内部链接错误。
小结
- 页面以 Frontmatter 开头,
title必填,正文不重复写 H1。 - Markdown 语法完全可用,组件标签可直接书写。
- 组件需为大驼峰并注册在
src/components.ts,否则构建报错。 - 共享片段用
<Render file="..." />,图标统一用ph:前缀。