Markdown 的語法簡潔明了、學習容易,而且功能比純文本更強,因此有很多人用它寫博客。世界上最流行的博客平臺 WordPRess 和大型 CMS 如 Joomla 、Drupal 都能很好的支持 Markdown 。
MkDocs 是一個用于創建項目文檔的快速,簡單的靜態站點生成器。文檔源碼使用 Markdown 來撰寫,用一個 YAML 文件作為配置文檔。
MkDocs 處理的是一系列的 Markdown 文檔,然后將 Markdown 文檔的內容解析出來,保存在 Python 字典中,最后 Jinja2 模板把內容生成為 html 。
MkDocs 如何將 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.
載入 YAML 的配置,將配置文件的內容讀取為 Python 內容。
YAML是一種直觀的能夠被電腦識別的的數據序列化格式,容易被人類閱讀,并且容易和腳本語言交互。YAML類似于xml,但是語法比XML簡單得多,對于轉化成數組或可以hash的數據時是很簡單有效的。
獲取頁面內容,從 markdown 中解析的內容,存入 Python 字典中,為后續 Jinja2 的調用做準備。
載入 Jinja2 模板,結合之前抽取的內容生成 HTML 文件。Jinja2 是一個現代的,設計者友好的,仿照 Django 模板的 Python 模板語言。 它速度快,被廣泛使用,并且提供了可選的沙箱模板執行環境保證安全。
toc.html 的代碼模板文件中有之前的 Python 變量,比如 nav.item ,會被替換為對應的內容。
MkDocs 比較巧妙的實現了內容和表現的分離,雖然沒有數據庫,但是使用了結構化的 markdown 文件,解析為 Python 內容,然后通過 Jinja2 模板,最后生成 HTML。
MkDocs http://www.mkdocs.org/
作者:不知道自己是誰(極光)http://www.jianshu.com/p/c9410da484fb
新聞熱點
疑難解答