Markdown 编辑器背后的故事
Markdown 是一种书写带格式文本的方式,即使作为纯文本也能自然阅读。星号表示强调,井号表示标题,短横线表示列表,这些都来自人们写电子邮件的习惯。本页讲述这个简单的想法如何成为 README 文件、笔记和文档的通用语言。
源自电子邮件
2004 年,John Gruber 在 Aaron Swartz 的帮助下,在他的网站 Daring Fireball 上发布了 Markdown。目标是让文本原样就易读易写,同时又能干净地转换为 HTML。许多约定来自电子邮件以及 Setext 等更早的纯文本格式:在一行下面加等号表示标题,用星号包围单词表示强调,行首加短横线表示列表。最初的转换器只是一个 Perl 脚本。
方言太多
最初的说明留下了许多模糊的边界情况,例如嵌套列表要缩进多少,或者空行何时结束一个块。每个新实现都有不同的判断,因此同一段文本在不同网站上可能显示得不一样。2014 年,John MacFarlane、Jeff Atwood 等人发布了一份包含数百个示例的精确规范。它最初名为 Standard Markdown,在 Gruber 提出异议后改名为 CommonMark。
GitHub Flavored Markdown
GitHub 通过 README 文件、议题和评论,让 Markdown 成为程序员日常工作的一部分。2017 年,GitHub 发布了 GitHub Flavored Markdown 的正式规范,它是 CommonMark 的严格超集。它增加了支持列对齐的表格、带复选框的任务列表、用两个波浪号表示的删除线,以及自动识别的链接。早已流行的带语言名的围栏代码块,则让语法高亮成为可能。
为什么要清理预览
Markdown 允许原始 HTML,这很方便,但也有风险。如果页面显示他人编写的 Markdown,隐藏的 script 标签、图片上的 onerror 属性或 javascript 链接都可能在读者的浏览器中运行代码,这种攻击称为跨站脚本。因此,本编辑器把原始 HTML 显示为文本,移除不安全的链接协议,并在显示前用元素和属性白名单过滤结果。
常见问题
Markdown 是谁发明的?
John Gruber 在 2004 年创造了 Markdown,Aaron Swartz 从一开始就是重要的合作者和测试者。
CommonMark 和 GFM 有什么区别?
CommonMark 是 Markdown 核心语法的精确规范。GitHub Flavored Markdown 以它为基础,增加了表格、任务列表、删除线和自动链接。
为什么我的 HTML 显示为文本?
为了安全。原始 HTML 可能携带脚本,所以编辑器会将其转义,只生成已知无害的元素。
准备好尝试了吗?
在浏览器中打开 PictorX — 无需安装,无需信用卡即可启动。
打开 Markdown 编辑器