玩轉 Markdown,你需要用到這幾個工具

藍貓163發表於2016-08-17

前言

隨著 WordPress 和靜態網站的流行,Markdown 被用的越來越多。

Markdown 是一個面向寫作的語法引擎,Markdown 的最終目的都是解析成 HTML 用於網頁瀏覽,所以它相容 HTML 語法,即你可以在 Markdown 文件中使用原生的 HTML 標籤。

Markdown 解析器

開發靜態網站生成器的時候都會採用一種叫front matter的格式進行網站內容寫在類似下面的格式

當進行網站生成的時候需要進行Markdown 解析,然後渲染成html頁面,那用什麼工具進行解析呢?

marked

marked是最早用node.js開發的Markdown 解析器,同時提供CLI命令呼叫和node.js api呼叫。

CLI呼叫程式碼示例

API呼叫示例

這些都是一些通用的功能,但是marked還支援程式碼高亮,通過使用highlight.js

使用highlight.js進行程式碼高亮相信大家都用到過,可能大家不知道是highlight.js還支援api方式呼叫,下面的程式碼會配置marked使用highlight.js進行程式碼高亮相信大家都用到過,可能大家不知道是highlight

生成的程式碼已經包含程式碼高亮標籤,最後只需要引入highlight.js的主題就能顯示了,highlight.js所有的顏色主題都在這裡

Markdown -js

Markdown -js也是一款使用node.js開發的Markdown 解析器,基本用法和marked差不多,但是文件裡面好像沒有提到像marked一樣進行程式碼高亮生成的介面,有興趣的同學自己找找吧。

Markdown 生成器

to-Markdown

什麼是Markdown 生成器,就是根據html標籤生成Markdown 檔案。

github上面Markdown 生成器star數最高的是to-Markdown 。

簡單的程式碼示例

to-Markdown 最近進行了更新,增加了對gfm的相容,gfm就是git flavored Markdown 的意思, 是github對Markdown 語法進行了擴充套件。

使用gfm的示例

那這個to-Markdown 有什麼用呢?

舉個簡單的例子,假如我想開發一個簡單的rss閱讀器,但是我又不想跳轉到目標網站去閱讀,因為不同的網站風格不一,導致不一致的閱讀體驗。

怎麼辦呢?那就把網站內容抓取下來,然後用to-Markdown 生成Markdown 檔案,然後使用自己的模板樣式進行統一渲染。

當然去除廣告只是一個side effect。

heckyesMarkdown

除了to-Markdown 之外還有一個比較好用的api,heckyesMarkdown ,這個專案使用了php-readability,提高文章的可讀性。

可惜heckyesMarkdown 沒有開源出來,這個專案有點古老,估計那個時候github還沒流行起來。

heckyesmarkdow對中文的支援不是非常友好,如果想抓取中文站還是使用to-Markdown 比較靠譜一點。

front matter

Markdown 寫文章確實很方便,簡單容易上手,但是Markdown 不能儲存後設資料,例如作者,日期,型別這樣的結構化的資料如果都生成html標籤的話提取的時候又稍微麻煩了點, 還得藉助cheerio才能完成。

所以,為了能方便的儲存文章的後設資料,幾乎所有的靜態網站生成器都使用front matter格式來儲存文章。

front matter檔案通常分為頭部和正文部分,頭部一般使用yamltoml和json三種格式,front matter 解析工具需要識別這三種格式的檔案頭。正文部分就是普通的Markdown 內容。

front-matter

front-matter也是用node.js開發的,相比Markdown 解析器來說,fornt-matter解析器要簡單很多。

示例檔案 example.md

解析程式碼

front matter雖然格式看起來有點雜亂,卻是對Markdown 強有力的補充。

相關文章