2 分钟阅读 · 561 字
MDX 写作指南:这个博客里能用的全部语法
这篇既是语法备忘,也是给自己看的写作规范。所有示例都在本站生效,可以直接抄。
Frontmatter 是文章的唯一"元数据入口"
---
title: '文章标题'
date: '2026-07-03'
summary: '一句话摘要,会出现在首页卡片、SEO description 和 RSS 里。'
tags: ['MDX', '写作']
cover: '/og-cover.svg'
draft: false
---
draft: true 的文章在开发时可见、在 next build 时被过滤掉——这是最轻量的草稿机制。
基础排版
加粗、斜体、删除线、行内代码,以及 站内链接 和 外部链接。
引用长这样:
写作是把模糊的直觉逼成清晰句子的过程。 如果一句话写不清楚,通常是还没想清楚。
表格与任务列表(GFM)
| 语法 | 渲染结果 | 常用场景 |
|---|---|---|
**文字** | 加粗 | 强调结论 |
> 文字 | 引用块 | 摘录、金句 |
- [ ] | 待办框 | 计划、清单 |
任务列表示例:
- 写完这篇文章
- 补一张流程图
- 校对错别字
代码块
带语言标注就会自动高亮,语言名交给 highlight.js 判断:
export function TagBadge({ tag }: { tag: string }) {
// 中文标签一定要编码,否则路由匹配不上
return <Link href={`/tags/${encodeURIComponent(tag)}`}>{tag}</Link>;
}
npm run dev # 本地开发,带热更新
npm run build # 构建,顺便做类型检查
npm start # 用构建产物起一个本地服务
自定义组件:Callout
因为 components/mdx/index.tsx 里注册过,正文里可以不 import 直接用:
图片
本地图片直接写相对路径,比如 /og-cover.svg:
目录是怎么来的
文章开头的目录不是手写的:构建时扫描正文里的二三级标题,用和 rehype-slug 同一套规则(github-slugger)算出锚点 id,所以点击必然能跳到正确位置。
写作清单
- 先写摘要,逼自己想清楚这篇要说什么
- 代码块一定标语言
- 结论放最前面,铺垫放后面
- 每篇至少一张图或一张表