国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

MkDocs 文檔生成邏輯淺析

2019-11-09 14:50:44
字體:
來源:轉載
供稿:網友

Markdown 和 MkDocs 簡介

Markdown 的語法簡潔明了、學習容易,而且功能比純文本更強,因此有很多人用它寫博客。世界上最流行的博客平臺 WordPRess 和大型 CMS 如 Joomla 、Drupal 都能很好的支持 Markdown 。

MkDocs 是一個用于創建項目文檔的快速,簡單的靜態站點生成器。文檔源碼使用 Markdown 來撰寫,用一個 YAML 文件作為配置文檔。

MkDocs 處理的是一系列的 Markdown 文檔,然后將 Markdown 文檔的內容解析出來,保存在 Python 字典中,最后 Jinja2 模板把內容生成為 html 。

MkDocs 如何將 Markdown 內容解析出來?又是如何將文檔內容結構化的?

Markdown 文檔解析

使用 Python-Markdown 解析文件,然后返回 html_content ,table_of_contents ,meta 。對內容做了初步的處理,從 markdown 文件,轉換為 Python 相關變量。

Python-Markdown 簡介This is a Python implementation of John Gruber’s Markdown. It is almost completely compliant with the reference implementation, though there are a few very minor differences. See John’s Syntax Documentation for the syntax rules.

Markdown 文檔解析

YAML 配置文件

載入 YAML 的配置,將配置文件的內容讀取為 Python 內容。

YAML是一種直觀的能夠被電腦識別的的數據序列化格式,容易被人類閱讀,并且容易和腳本語言交互。YAML類似于xml,但是語法比XML簡單得多,對于轉化成數組或可以hash的數據時是很簡單有效的。

YAML 配置文件

Python 字典

獲取頁面內容,從 markdown 中解析的內容,存入 Python 字典中,為后續 Jinja2 的調用做準備。

Python 字典

Jinja2 內容生成

載入 Jinja2 模板,結合之前抽取的內容生成 HTML 文件。Jinja2 是一個現代的,設計者友好的,仿照 Django 模板的 Python 模板語言。 它速度快,被廣泛使用,并且提供了可選的沙箱模板執行環境保證安全。

Jinja2 內容生成

Jinja2 模板文件

toc.html 的代碼模板文件中有之前的 Python 變量,比如 nav.item ,會被替換為對應的內容。

Jinja2 模板文件

MkDocs 比較巧妙的實現了內容和表現的分離,雖然沒有數據庫,但是使用了結構化的 markdown 文件,解析為 Python 內容,然后通過 Jinja2 模板,最后生成 HTML。

MkDocs http://www.mkdocs.org/

作者:不知道自己是誰(極光)http://www.jianshu.com/p/c9410da484fb
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武穴市| 平武县| 林口县| 图们市| 桐庐县| 阿合奇县| 罗城| 司法| 陵川县| 达日县| 肥城市| 拉孜县| 南郑县| 英吉沙县| 阿合奇县| 丹寨县| 革吉县| 武功县| 大庆市| 海晏县| 京山县| 库伦旗| 乡城县| 文成县| 修文县| 永德县| 瓦房店市| 婺源县| 泊头市| 长乐市| 永昌县| 乌兰察布市| 鹤岗市| 枞阳县| 伽师县| 西平县| 洛川县| 习水县| 岢岚县| 齐河县| 莎车县|