1. Markdown 的诞生
1.1 纯文本与富文本
人类世界的信息往往都是以文字的形式展示,文字信息存储在计算机系统中的方式是文本文件
。由于计算机只能识别二进制的 0 和 1,因此在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。
后来为了文字信息的存储和读取的方便,出现了文本编辑器
。文本编辑器允许用户输入所见即所得的文字信息,至于文字和二进制之间的转换,就交给文本编辑器去做了。就这样,人们可以通过文本编辑器实现文字的存储和读取,人们看到的信息就是文字本身,不用再是复杂的 0 1 二进制信息了。例如 window 系统自带的 记事本
工具就是一个文本编辑器。
早期的文本编辑器的功能很单一,只能编辑纯文本,即纯文字,不能给文字添加颜色,背景色,图片等。后来随着文本编辑器的发展,逐渐出现了一种功能更强大的文本编辑器,可以给文字添加颜色,添加图片,超链接等。为了区分这两种文本编辑器,只能编辑纯文本的编辑器被称为 纯文本编辑器
,功能更强大的编辑器被称为 富文本编辑器
。文本文件也被分为 纯文本文件
和 富文本文件
。富文本编辑器出现后极大地丰富了文本文件的内容,至今都被广泛地应用。例如微软家的 world 编辑器就是典型的富文本编辑器。富文本编辑器之所以能显示更丰富的内容,是因为其在纯文本编辑器的基础上添加了更高层次的渲染功能。
1.2 HTML 的出现
HTML 全称是 HyperText Markup Language
,即 超文本标记语言
。该语言的发明最早的初衷就是用于文档信息在互联网之间的共享的。HTML 标记语言可以用于富文本信息的存储,存储方式就是根据 HTML 语言的规则书写文本文件,用浏览器打开该文件即可正确地显示出富文本信息。HTML 呈现富文本的形式和传统的富文本编辑器不太一样,传统的富文本编辑器是让用户书写普通文字,通过编辑器提供的加粗/文字颜色等工具对文字进行操作,及时渲染出效果。而 HTML 是规定了一种语言格式,用户用这种特定语言编写源码文件,由 HTML 文件的处理工具即 浏览器
渲染出富文本的效果展示出来。
传统的富文本编辑器和浏览器虽然都可以展示富文本信息,但二者的本质还是有区别的,浏览器的功能远不止此。
1.3 Markdown 语言
用传统富文本编辑器里编写的富文本文件只能用对应的富文本编辑器才能正确的展示出富文本的效果,若想让浏览器展示富文本效果,就需要用 html 语言编写文件内容。浏览器出现后,大部分的文档都需要共享,需要在网络上传播,如博客等。因此编写浏览器可以识别的富文本文件,就需要懂得 html 语言的书写规范。这样看来,书写可以被浏览器传播和正确显示的富文本信息就成了程序员的专属事情。对于普通人来说,写个文档还得学们语言,让文档的编写变得复杂。
后来约翰·格鲁伯在2004年创造了Markdown语言,Markdown 语言和 html 语言一样也是一门标记语言,但 Markdown 语言是一种轻量级的标记语言,和纯文字格式差别不大,语法少,容易学习,也容易理解。而对应的 Markdown 编辑器做的事情就是将 Markdown 语法编译解释成对应的 html 语言。例如 # 一级标题
,经过 Markdown 编辑器编译后就是 <h1>一级标题</h1>
。这样一来,直接用 Markdown 语法写的文字经过 Markdown 编辑器的处理就可以在浏览器正确展示出来了。
Markdown 语言的出现,让互联网文档的撰写变得很方便,因此到目前为止都一直很受欢迎。
2. Markdown 编辑器
Markdown 编辑器根据使用环境可以分为三类:
- 平台集成类:
各大在线博客、社区平台自带的写作工具,比如掘金,博客园等。
- 独立软件类:
下载到自己机器上使用的独立产品,可以编辑本地文件,比如Mou、MarkdownEditor、Haroopad, Typro 等。
- 插件类:
自身不能独立使用的,需要集成到特定的环境的。
- 解析工具类:
是单独的 Markdown 解析器,可以在自己的项目中使用,用于解析 Markdown 语法的。例如 markdown-it
和marked
和 showdown
等。这些底层工具是 Markdown 解析器的核心。