0
点赞
收藏
分享

微信扫一扫

从markdown引擎实现的角度看markerdown到底是什么?

引用百度百科的解释:

链接:https://baike.baidu.com/item/markdown/3245829

Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。 如 GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被使用来撰写电子书。


上面的解释比较官方,不是很好理解,本文从markdown引擎实现的角度说说个人的观点,谈谈markerdown到底是什么?

markdown和html语言一样是标记语言,而且要知道的是markdown语言的最终呈现方式就是转换为html语言的。作为标记语言,markdown和html一样,功能就是设置页面的显示形式,具体大致为:

  1. 控制哪段话是标题,哪段话是正文,哪部分是引用,哪部分是链接,哪部分是公式,哪部分是代码块;
  2. 控制字体的大小,几号字体,是否加粗,是否为斜体,是否有下划线或划线;
  3. 控制文字位置,是否居中,是否居左,是否居右;


说直白些,markdown和html这种标记语言就是用来控制页面显示模式的。


而markdown可以看做是对html语言的一种简化版,或者说是一种语言语法上的一种别名,因为markdown中的所有内容都是需要被转换为html语言进行实现的,也正是如此markdown可以直接使用html语言进行内容编写,这样在markdown文本做就不需要对这部分html语言再做转换了,因为这部分内容已经是html语言了。

由于markdown语言的简单性,所以把markdown语言转为html语言是十分容易的,甚至稍微有些前端经验的人都可以快速的手撸一个markdown引擎,可以说markdown语言的引擎对于前端工程师来说基本是没有任何门槛的,因为markdown的本质其实就是html。画句号来说markdown就是一种简单版本的html语言的翻译版,这就和汇编语言和C语言一样,是存在着这样一种对应的关系的,只不过markdown语言由于其简略性会在翻译为html语言后只具备部分html语言的特性,因此很多追求更丰富页面显示能力的人会在markdown文本中直接加入html语言,比如字体控制:

从markdown引擎实现的角度看markerdown到底是什么?_html

也比如说,换行控制:

从markdown引擎实现的角度看markerdown到底是什么?_Markdown_02


这里可以更多提的还有这个换行控制的翻译,有的markdown引擎会把markdown中的多个回车直接翻译成html中的一个换行,但是有的markdown引擎则会把所有的回车全部翻译成换行,因此就存在同一个markdown文本放在GitHub上和Gitee上会出现两种不同显示效果的现象——Github上能够显示出段落间的多个换行而Gitee上段落与段落之间则是紧紧相邻的。而造成这些区别的原因就是不同网站使用的markdown引擎在文本翻译为html语言时的差异性,因此为了自己的markdown文本可以在所有markdown引擎的翻译下均能有相差不大的显示效果,我个人是一直直接使用html语言中的换行符进行直接表示的,即:

从markdown引擎实现的角度看markerdown到底是什么?_标记语言_03


知道了markdown与html之间的关系后也就清楚了markdown引擎的实现原理了。


PS. HTML语言确实蛮复杂的,也不好记,但是日常人们的书写需要往往又用不到那些复杂的功能,因此使用markdown作为平时工作中的文本书写工具往往是恰恰好的,但是呢有些时候也会遇到一些问题,比如博客园的markdown引擎对转换后的html文本字体的效果就不是很好,太小,于是我就手动的加入html语言中的字体大小控制语句,实现了毕竟适中的字体大小:

从markdown引擎实现的角度看markerdown到底是什么?_Markdown_04



举报

相关推荐

0 条评论