Markdown 的语法简洁明了、学习容易,并且功能比纯文本更强,所以有不少人用它写博客。世界上最流行的博客平台 WordPress 和大型 CMS 如 Joomla 、Drupal 都能很好的支持 Markdown 。html
MkDocs 是一个用于建立项目文档的快速,简单的静态站点生成器。文档源码使用 Markdown 来撰写,用一个 YAML 文件做为配置文档。数据库
MkDocs 处理的是一系列的 Markdown 文档,而后将 Markdown 文档的内容解析出来,保存在 Python 字典中,最后 Jinja2 模板把内容生成为 html 。数组
MkDocs 如何将 Markdown 内容解析出来?又是如何将文档内容结构化的?安全
使用 Python-Markdown 解析文件,而后返回 html_content ,table_of_contents ,meta 。对内容作了初步的处理,从 markdown 文件,转换为 Python 相关变量。markdown
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的数据时是很简单有效的。htm
获取页面内容,从 markdown 中解析的内容,存入 Python 字典中,为后续 Jinja2 的调用作准备。文档
载入 Jinja2 模板,结合以前抽取的内容生成 HTML 文件。
Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被普遍使用,而且提供了可选的沙箱模板执行环境保证安全。get
toc.html 的代码
模板文件中有以前的 Python 变量,好比 nav.item ,会被替换为对应的内容。
MkDocs 比较巧妙的实现了内容和表现的分离,虽然没有数据库,可是使用告终构化的 markdown 文件,解析为 Python 内容,而后经过 Jinja2 模板,最后生成 HTML。
MkDocs http://www.mkdocs.org/
做者:不知道本身是谁(极光)http://www.jianshu.com/p/c9410da484fb