共计 2245 个字符,预计需要花费 6 分钟才能阅读完成。
前言
在《一篇带你用 VuePress + Github Pages 搭建博客》中,咱们应用 VuePress 搭建了一个博客,最终的成果查看:TypeScript 中文文档。
在优化博客的过程中,因为须要写 markdown-it
插件,翻了下 markdown 的 CommonMark Spec,忽然发现对 Markdown 还远不够理解:
软换行(Soft line breaks)
换行符不在行内代码或 HTML 标签内,后面没有两个或以上的空格,将解析为 软换行(Soft line breaks)。渲染为 HTML 时是一个 行结束符或空格。
输出:
foo
baz
输入:
<p>foo
baz</p>
体现:
硬换行(Hard line breaks)
换行符不在内联代码或 HTML 标签内,后面有两个或多个的空格,并且不在块的开端,将解析为 硬换行(Hard line breaks),渲染为 HTML 时是一个 <br />
标签。
输出(留神 foo
前面有两个空格):
foo
baz
输入:
<p>foo
baz</p>
体现:
反斜杠(backslash)
除了用于本义,在行尾的反斜杠相当于硬换行:
输出:
foo\
bar
输入:
<p>foo
bar</p>
行内代码(code span)
咱们通常会用一对反引号包裹字符串,示意 行内代码(code span):
输出:
`foo`
输入:
<p><code>foo</code></p>
体现:
但其履行内代码只要求内联代码以反引号串开始,以同样长度的反引号串完结。
所以用多个反引号也是能够的:
```foo```
输入:
<p><code>foo</code></p>
围栏式代码块(Fenced code blocks)
如果你应用了至多三个间断的反引号,并且增加了换行,就会变成围栏式代码块:
```
foo
```
输入:
<pre><code>foo
</code></pre>
体现:
如同行内代码,不要求必须三个反引号,只有至多三个并且前后雷同就行,所以当咱们想在代码块中应用三个反引号时,你能够应用四个反引号包裹:
````
```markdown
foo
```
````
体现为:
不应用反引号,应用波浪号也是能够的,但不能混用:
~~~
foo
~~~
输入:
<pre><code>foo
</code></pre>
缩进式代码块(Indented code blocks)
缩进式代码块由空行隔开的数个 缩进块 组成。
缩进块 是数个非空行,每行缩进四个或多个空格。
举例一个缩进块:
a simple
indented code block
输入:
<pre><code>a simple
indented code block
</code></pre>
体现:
举例由空行隔开的数个缩进块:
chunk1
chunk2
chunk3
输入:
<pre><code>chunk1
chunk2
chunk3
</code></pre>
三个缩进块独特组成了缩进式代码块。
体现:
链接援用定义(Link reference definitions)
链接援用定义由链接标签、冒号(:)、可选的空白、链接指标、可选的空白及可选的链接题目组成。举个例子:
[foo]: /url "title"
但这只是一个定义,并不会有任何展现,就像咱们在 JavaScript 中申明了一个变量一样,如果咱们要应用它:
[foo]
输入:
<p><a href="/url" title="title">foo</a></p>
链接援用定义不对应于某个构造元素。实际上它定义了一个标签,以用于在文档其它中央的援用链接及援用类型图像。它能够呈现在援用链接的后面或前面。
当在图片中应用链接援用定义时:
![foo][bar]
[bar]: /url
输入:
<p><img src="/url" alt="foo" /></p>
主动链接(Autolinks)
主动链接是由尖括号 (<…>) 包裹的相对 URI 与 email 地址。它将解析为链接,以 URL 或 email 地址作为链接标签。
<http://foo.bar.baz>
相当于:
[http://foo.bar.baz](http://foo.bar.baz)
输入为:
<p><a href="http://foo.bar.baz">http://foo.bar.baz</a></p>
Setext 式题目(Setext headings)
Setext 是一种轻量级标记语言,用于格式化纯文本文档,例如电子通信,Usenet 帖子和电子邮件。与其余一些标记语言相比,该标记易于浏览,而无需任何解析或非凡软件。
Markdown 同样提供了相似的语法:
Foo *bar*
=========
Foo *bar*
---------
输入:
<h1>Foo <em>bar</em></h1>
<h2>Foo <em>bar</em></h2>
应用 =
则是第一级题目,应用 -
字符则是第二级题目。底线长度任意。
水平线(Thematic breaks)
由 0-3 个空格的缩进及三或多个 -
,_
, *
字符组成的行,造成水平线。
输出:
***
---
___
输入:
<hr />
<hr />
<hr />
体现:
系列文章
博客搭建系列是我至今写的惟一一个偏实战的系列教程,预计 20 篇左右,解说如何应用 VuePress 搭建、优化博客,并部署到 GitHub、Gitee、公有服务器等平台。本篇为第 19 篇,全系列文章地址:https://github.com/mqyqingfen…
微信:「mqyqingfeng」,加我进冴羽惟一的读者群。
如果有谬误或者不谨严的中央,请务必给予斧正,非常感激。如果喜爱或者有所启发,欢送 star,对作者也是一种激励。