从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一样,功能就是设置页面的显示形式,具体大致为:
- 控制哪段话是标题,哪段话是正文,哪部分是引用,哪部分是链接,哪部分是公式,哪部分是代码块;
- 控制字体的大小,几号字体,是否加粗,是否为斜体,是否有下划线或划线;
- 控制文字位置,是否居中,是否居左,是否居右;
说直白些,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引擎会把markdown中的多个回车直接翻译成html中的一个换行,但是有的markdown引擎则会把所有的回车全部翻译成换行,因此就存在同一个markdown文本放在GitHub上和Gitee上会出现两种不同显示效果的现象——Github上能够显示出段落间的多个换行而Gitee上段落与段落之间则是紧紧相邻的。而造成这些区别的原因就是不同网站使用的markdown引擎在文本翻译为html语言时的差异性,因此为了自己的markdown文本可以在所有markdown引擎的翻译下均能有相差不大的显示效果,我个人是一直直接使用html语言中的换行符进行直接表示的,即:

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

从markdown引擎实现的角度看markerdown到底是什么?的更多相关文章
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- 从JDK源码角度看Object
Java的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类.它包含了对象常用的一些方法,比如getClass.hashCode.equals.clone. ...
- 对博弈活动中蕴含的信息论原理的讨论,以及从熵角度看不同词素抽象方式在WEBSHELL文本检测中的效果区别
1. 从赛马说起 0x1:赛马问题场景介绍 假设在一场赛马中有m匹马参赛,令第i匹参赛马获胜的概率为pi,如果第i匹马获胜,那么机会收益为oi比1,即在第i匹马上每投资一美元,如果赢了,会得到oi美元 ...
- 用上CommonMark.NET,.NET平台终于有了好用的markdown引擎
缺少好用的markdown引擎之前一直是.NET平台上的一个痛点.因为这个痛点,我们被迫痛苦地使用了pandoc--不是pandoc做的不好,而是pandoc是由Haskell开发的,只能在Windo ...
- Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...
- [置顶] 从引爆点的角度看360随身wifi的发展
从引爆点的角度看360随身wifi的发展 不到一个月的时间,随身wifi预定量就数百万.它的引爆点在哪里,为什么相同的产品这么多它却能火起来,通过对随身wifi的了解和我知识层面分析,主要是因为随身w ...
- 站在Java的角度看LinkedList
站在Java的角度看,玩队列不就是玩对象引用对象嘛! public class LinkedList<E> implements List<E>, Deque<E> ...
- 从源码的角度看 React JS 中批量更新 State 的策略(下)
这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...
- 从线程模型的角度看Netty的高性能
转载:Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包. 比 ...
- INDEX--从数据存放的角度看索引2
在上次<INDEX--从数据存放的角度看索引>中,我们说到"唯一非聚集索引"和“非唯一非聚集索引”在存储上有一个明显的差别:唯一非聚集索引的非叶子节点上不会包含RID的 ...
随机推荐
- vm ware 虚拟WIN10 时,chrome ,cent browser 显示异常,花屏
类似: 解决方法: 在VM WARE 显卡设置中关闭"加速3D图形". -
- 算法金 | 一文彻底理解机器学习 ROC-AUC 指标
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环.而 ROC(Rece ...
- Vue学习:21.mixins混入
在Vue中,mixins(混入)是一种用于分发Vue组件中可复用功能的灵活机制.它们允许你抽取组件中的共享功能,如数据.计算属性.方法.生命周期钩子等,并将其作为单独的模块复用到多个组件中.这种方式有 ...
- spring与设计模式之五委派模式
一.定义 主要突出一个安排,派遣. 这个设计模式非常常见,不需要学习也能自然而然地用上. 从广义的角度出发,一个对象用另外一个对象就是委派. 二.经典实现 略. 三.spring实例代码 https: ...
- 京东云上centos8.2 安装 consul1.11.1
做个笔记下 -- 前言 部分内容有参考网友的,但是地址不记得了! 安装内容基本参考官网的和上一个网友的 官网地址: https://www.consul.io/downloads 以下是使用root方 ...
- hadoop集群配置文件与功能对应解析
以三个节点的集群为例: 总括: nodemanager ,datanode --> slavesresourcemanager ----------> yarn namenode ...
- TIOBE 7月编程排行榜出炉!Python再次出圈
又到了周三,本周有过半了,大家好呀 ~~ 每月的TIOBE编程排行榜都是技术社区关注的焦点,作为编程语言流行度的晴雨表,它反映了行业趋势和 技术走向.2024年7月的榜单揭晓了一个重要变化:Pytho ...
- 网易数帆开源贡献获业界肯定,轻舟API网关获OSCAR尖峰开源技术创新奖
2020年10月16日,由中国信息通信研究院主办的"2020开源产业大会"在北京线下与线上同步召开,主办方在会上公布了"OSCAR尖峰开源奖项"各个奖项的评选结 ...
- PN转Modbus RTU模块连接ACS4QQ变频器通信
一台完整的机器在出厂前由许多部件组成.但是,由于各种原因,这些组件来自不同的制造商,导致设备之间的通信协议存在差异.Modbus和Profinet代表两种不同的通信协议,Profinet通常用于较新的 ...
- 题解:AT_abc359_e [ABC359E] Water Tank
背景 中考结束了,但是暑假只有一天,这就是我现在能在机房里面写题解的原因-- 分析 这道题就是个单调栈. 题目上问你第一滴水流到每个位置的时间.我们考虑,答案其实就是比当前木板高且距离当前木板最近的那 ...