工作原理
Markdown 是一套由解析器转换成 HTML 的纯文本约定。核心语法——行首井号表示的标题、星号或下划线表示的强调、方括号加圆括号表示的链接与图片、列表、引用和围栏代码块——是稳定的,由 CommonMark 规范定义。除此之外的一切都来自扩展,这就是同一份文档在两个系统里渲染结果不同的原因,也是这里提供开关的原因:GitHub 风格 Markdown 增加了表格、任务列表、删除线和自动链接,而“换行”选项决定段落内的单个换行是被渲染成换行还是被折叠成空格。
预览经过清洗,因为 Markdown 允许内联原始 HTML,而来自任何地方的原始 HTML 都是脚本注入风险。渲染结果会由浏览器自身的 HTML 解析器解析,并从白名单重建:已知安全的元素与属性保留下来,script、style、iframe、form 和 SVG 被丢弃,所有事件处理属性被移除,javascript: 协议被拒绝,指向站外的链接会被加上 rel noopener 和 nofollow。最终得到的是一个能渲染安全部分、且什么都不会执行的预览。
大纲由源码而非渲染后的 DOM 推导,这一点很重要,因为渲染器是异步惰性加载的,而大纲需要在每次按键时即时更新。围栏代码块会被跟踪,因此 shell 注释里的井号不会被误认为标题——这是任何朴素的标题扫描在含代码文档上都会犯的错。词数、字符数、行数和阅读时间统计来自同一遍处理。
导出可以产出 Markdown 原文,也可以产出包含 doctype、UTF-8 meta 标签和已清洗正文的完整 HTML 文档。HTML 导出刻意保持自包含,除语义元素外不加样式,因此可以直接在浏览器中打开、粘贴进接受 HTML 的 CMS,或作为加样式页面的起点。它不会保留目标渲染器不支持的 Markdown 扩展——表格会变成 HTML 表格并保留,但某个实现独有的脚注语法可能无法幸存。
常见应用场景
- 编写 README 并在提交前确认表格与代码块能正确渲染。
- 起草发布说明或文档,并导出为 HTML 供 CMS 或邮件使用。
- 预览别人写的 Markdown 文件,看清其预期结构。
- 把 Markdown 文档转成 HTML,粘贴进不支持 Markdown 的系统。
- 查看长文档的大纲,检查标题层级是否一致。
- 粘贴不受信任的 Markdown,在发布到任何地方之前先看清它的原始 HTML 会做什么。
最后更新: 2026-10-14