文档章节

MkDocs 文档生成逻辑浅析

极光推送
 极光推送
发布于 2017/02/09 15:05
字数 588
阅读 23
收藏 0
点赞 0
评论 0

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

© 著作权归作者所有

共有 人打赏支持
极光推送
粉丝 40
博文 103
码字总数 118329
作品 1
深圳
个人站长
mkdocs与jekyll 创建静态网站

mkdocs教程:http://www.mkdocs.org/#installation(英文) http://markdown-docs-zh.readthedocs.org/zhCN/latest/(中文) MacDown的下载包:http://yunpan.cn/cdmKrfvZs2fsc (提取码:6a8e)......

黑黑的豆 ⋅ 2015/08/06 ⋅ 0

(mkdocs)一款使用markdown编写website的插件

推荐一款markdown的文档website 自带服务(开源) 可以添加镶嵌html代码 *分目录结构 0.准备 默认已经安装python $ python --versionPython 2.7.2$ pip --versionpip 1.5.2 1.安装mkdocs $ pi...

mingle ⋅ 2016/01/06 ⋅ 0

常用工具备忘(更新中)

在线生成ajax动态图标 android开源代码库 jar包查找 CSS验证 网页变灰 死链接检查 pdf在线工具 时序图在线工具 http://www.freeformatter.com/xpath-tester.html Can I Use --检查各浏览器支...

jeffsui ⋅ 2013/05/10 ⋅ 0

静态网站生成器--MkDocs

MkDocs 可以同时编译多个markdown文件,形成书籍一样的文件。有多种主题供你选择,很适合项目使用。 MkDocs 是快速,简单和华丽的静态网站生成器,可以构建项目文档。文档源文件在 Markdown...

不避风云 ⋅ 2015/11/06 ⋅ 1

HTML文档制作

官网:MKDOCS 不写了,更换了一下编辑器,内容全没了:([找到了,在草稿箱里,怎么也没有提示,算了,困死了,先睡会儿去] 其实也没必要写,只要知道官网的地址就行了,本来就很简单,官网描述...

TaceyWong ⋅ 2015/04/05 ⋅ 0

RESTful API 框架--Flask-Restaction

Flask-Restaction,为RESTful API而生的Web框架: 创建RESTful API 校验用户输入以及将输出转化成合适的响应格式 身份验证和权限控制 自动生成Javascript SDK和API文档 注意:仅支持Python3...

guyskk ⋅ 2015/10/12 ⋅ 0

iOS 移动端面向文档开发

之前的解耦架构生成器在实际项目中已经顺利测试通过了, 现在要做的是将文档规范出来, 并扩展到Android, HTML5端的共用, 实现面向文档开发. 参考链接: iOS 执行.py脚本生成解耦架构 iOS 执行....

Castie1 ⋅ 2017/11/25 ⋅ 0

iBatis和Hibernate浅析

iBatis和Hibernate浅析 Hibernate Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hiber...

JAVA__ ⋅ 2012/08/16 ⋅ 1

浅析http

这一篇文章并不是纯API 文档. 按照惯例,我们应当先了解什么是http以及它在web 开发中的常见应用场景. HTTP,按照百度百科的说法其名约:"超文本传输协议",嘿嘿,但是,其实他的原名其实应该是...

唐正汉 ⋅ 2017/11/02 ⋅ 0

linux内存屏障浅析

内存屏障是一个很神奇的东西,之前翻译了linux内核文档memory-barriers.txt,对内存屏障有了一定有理解。现在用自己的方式来整理一下。 在我看来,内存屏障主要解决了两个问题:单处理器下的...

子璐 ⋅ 2015/07/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 25分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 30分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 36分钟前 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 36分钟前 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 37分钟前 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

Java序列化和反序列化

1、什么是序列化和反序列化 序列化:把对象转换为字节序列的过程。 反序列化:把字节序列恢复成对象的过程。 2、被序列化的类需要实现serializable接口,只是为了标注该对象是可以被序列化的...

IT-Mamba ⋅ 今天 ⋅ 0

流式构建原理

流式构建需要达到分钟级的数据更新频率,Kylin采用类似于Spark Streaming的做法,每隔数分钟进行一次微构建。这边的构建需要考虑到一个延迟因素,分布式网络存在延迟等因素,该时间段的数据有...

无精疯 ⋅ 今天 ⋅ 0

在maven项目工程编写solr代码,需要的依赖

solrJ <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.6.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents<......

爱运动的小乌龟 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部