文档框架
同博客框架 WordPress、Hexo 等一样,Web 文档也有自己的框架,如比如 Java 的 Javadoc,Python 的 pydoc,以及Python-sphinx。对于 Python 有专门文档标记语言 reStructuredText(RST),常见的 Python 各种库和工具的帮助文档基本都是用 RST 所写。如 Requests、Flask、Scrapy 等。
不过,用 RST 编写对于已经会了 Markdown(更为流行) 的读者来说,有点浪费,而且两者的语法差异较大,容易造成记忆冲突。幸运的是有了 mkdocs,不仅能轻松制作类似 Scrapy 帮助文档的文档项目,而且支持 markdown 语法。
使用MkDocs
安装 MkDocs
代码语言:javascript复制pip install mkdocs
创建项目
执行下面命令就在当前目录下,生成一个 testdocs 文件夹,就是创建的文档项目
代码语言:javascript复制mkdocs new testdocs
cd命令进入文件夹,查看结构
- mkdocs.yml 为配置文件
- docs 文件夹中为文档文件目录,文件使用 markdown 编写
文档预览
进入 创建的文档项目目录,执行 mkdocs serve
:
mkdocs serve
INFO - Building documentation...
INFO - Cleaning site directory
INFO - Documentation built in 0.16 seconds
INFO - [18:16:18] Serving on http://127.0.0.1:8000/
将启动一个 Web 服务器,用于预览 testdocs 文件项目,效果如下: 将启动一个 Web 服务器,用于预览 testdocs 文件项目,效果如下:
进行配置
mkdocs 的配置简单明了,采用 yml 格式:
代码语言:javascript复制site_name: MkLorum
site_url: https://example.com/
nav:
- Home: 'index.md'
- About: 'markdown.md'
theme: readthedocs
当文档比较复杂时,可以通过嵌套的方式对 nav 进行配置,例如在 Home 下还有子菜单,menu1 和 menu2:
当文档比较复杂时,可以通过嵌套的方式对 nav 进行配置,例如在 Home 下还有子菜单,menu1 和 menu2:
代码语言:javascript复制nav:
- Home: 'index.md'
- 'User Guide':
- 'Writing your docs':
- Menu1 : 'menu1.md'
- Menu2 : 'menu2.md'
- 'Styling your docs': './style/styling-your-docs.md'
- About:
- 'License': 'license.md'
- 'Release Notes': 'release-notes.md'
效果如下:
- 如果菜单名中有空格需要用引号(单双皆可)括起来
- 文档文件不要同导航结构配合,可以为导航配置相对文件路径
- 菜单层级可以无限嵌套
默认情况下,即在不配置导航 (nav) 的情况下,会按照文件名,目录结构生成导航菜单
更换主题
下载主题:
代码语言:javascript复制pip **install** mkdocs-material mkdocs-windmill
mkdocs.yml里添加:
代码语言:javascript复制theme:
name: 'material'
# 也可以选bootstrap
其他的一些配置:
代码语言:javascript复制theme:
name: "material"
# logo: 'images/logo.svg'
logo:
icon: "mkdocs"
palette:
primary: "black"
accent: "deep orange"
language: "zh"
material页面风格:
更多主题:https://github.com/mkdocs/mkdocs/wiki/MkDocs-Themes
一些约定
- 站点首页 默认情况下,必须创建一个 index.md 作为站点首页。同时也支持 README.md 作为首页,会将其转化为 index.html。如果 index.md 和 README.md 同时存在,将忽略 README.md
- 非 markdown 文件 markdown 文件,即扩展名为 md 的文件,会被转化为 html。非 markdown 文件,会被原封拷贝,不做任何修改
- 内部链接 如果需要引用另一个文件,只需要按照 markdown 链接的方式,连接到这个文件就可以了,例如 详情请参考。不要担心文件名,因为生成站点时会自动换成 html 文件路径
生成站点
执行mkdocs build命令,生成站点,点击index.html即可
代码语言:javascript复制mkdocs build
使用sphinx
安装sphinx和主题
代码语言:javascript复制pip install sphinx sphinx_rtd_theme
创建项目
创建一个文件夹后,执行命令
代码语言:javascript复制sphinx-quickstart
编写文档
修改主题
在conf.py文件中添加这两行代码,修改主题
代码语言:javascript复制import sphinx_rtd_theme
html_theme = 'sphinx_rtd_theme'
# 记得删除下面的html_theme = 'alabaster'
更多主题请参考:https://sphinx-themes.org/
构建站点
在根目录输入命令,即可生成网站构建。在build/html目录下即可看到生成的网站
代码语言:javascript复制make html
点击index.html即可查看
使用Teadocs
Teadocs 是一款能够帮你快速构建html文档的工具,它基于nodejs编写,并使用markdown来编写文档内容。
Teadocs 提供内置的搜索技术,除了编写好你引以为豪的内容以外,你无需关注的任何额外的技术问题。
你可以使用它来编写开源书籍、API文档学习、笔记、学习心得、甚至可以用来写博客。
安装
需要nodejs版本 >= 8.0,npm 版本 > 3.
代码语言:javascript复制$ npm install -g teadocs
初始化一个文档项目
代码语言:javascript复制$ teadcos init mydocs
进入这个文档目录
代码语言:javascript复制$ cd mydocs
此步骤是进入文档编辑模式(开发模式),此模式将监视markdown文件的变化,实时热替换html页面。
代码语言:javascript复制$ teadocs dev
自动生成项目初始结构
如果你想偷懒,那么你可以在编写好tree.md(菜单的配置文件)的情况下,直接运行以下命令,teadocs可以自动帮你生成md文件。
代码语言:javascript复制$ teadocs init
编译成html
代码语言:javascript复制$ teadocs build
文档目录结构介绍
代码语言:javascript复制testdocs
├─ build #这个是编译输出的目录
│ ├─ config
│ │ ├─ main.html
│ │ ├─ nav.html
│ │ └─ structure.html
│ ├─ custom_theme.html
│ ├─ data.js
│ ├─ deploy.html
│ ├─ index.html
│ ├─ install.html
│ ├─ quick_start.html
│ ├─ static
│ │ ├─ css
│ │ ├─ font-awesome-4.7.0
│ │ ├─ fonts
│ │ ├─ images
│ │ └─ js
│ └─ template_markdown.html
├─ docs #这个是文档的源文件目录,也就是markdown文件目录。
│ ├─ config
│ │ ├─ main.md
│ │ ├─ nav.md
│ │ └─ structure.md
│ ├─ custom_theme.md
│ ├─ deploy.md
│ ├─ index.md
│ ├─ install.md
│ ├─ quick_start.md
│ └─ template_markdown.md
├─ static # 这个地方是用于存放文档中需要用要的静态文件,例如图片等,它会自动copy到build目录下。
|
├─ teadocs.config.js # 这是teadocs的主配置文件
└─ tree.html # 这是文档的菜单配置文件
主配置文件说明
菜单的配置文件是你文档根目录下面的 teadocs.config.js
,它是一个javascript的文件。
主配置文件的所有配置项都不是必填你完全可以什么也不填写,它的代码如下:
代码语言:javascript复制'use strict';
const path = require('path')
module.exports = {
doc: {
name: "", //文档名称
description: "", //文档的描述
version: "", //文档的版本
dir: "", //文档的目录
outDir: "", //文档编译成html时输出的目录
staticDir: "" //文档所用到的静态文件的地址
},
theme: {
dir: "", //主题的目录,可自定义主题
title: "", //html的title标签
headHtml: "", //html head 的代码
footHtml: "", //html 底部 的代码
isMinify: true, //是否为输出的html启用压缩
rootPath: "/" //表示根路径,如果部署在深目录下面,这个配置项必填,不然会出现找不到资源路径的错误。
},
nav: {
tree: "./tree"
}
}
默认配置
代码语言:javascript复制module.exports = {
doc: {
name: "欢迎使用Teadocs文档生成系统",
description: "欢迎使用Teadocs文档生成系统",
version: "0.0.1",
dir: "./docs",
outDir: "./build",
staticDir: "./static"
},
theme: {
dir: __dirname '/../themes/default',
title: "欢迎使用Teadocs文档生成系统",
headHtml: `
<meta name="description" content="欢迎使用Teadocs文档生成系统" />
<meta name="keywords" content="teadocs, 文档生成器" />
`,
footerHtml: "",
isMinify: false,
rootPath: "/"
},
nav: {
tree: "<ul><li><a>欢迎使用Teadocs文档生成系统</a></li></ul>"
}
}
菜单配置文件说明
菜单的配置文件是你文档根目录下面的 tree.md
文件,它采用了markdown语法来进行书写。
菜单结构
例如,本文档的菜单结构如下:
代码语言:javascript复制- [介绍](/index)
- [快速入门](/quick_start)
- [安装](/install)
- 配置介绍
- [文档目录结构介绍](/config/structure)
- [主配置文件说明](/config/main)
- [菜单配置文件说明](/config/nav)
- [markdown模版](/template_markdown)
- [自定义主题](/custom_theme)
- [部署](/deploy)
符号介绍
语法完全使用markdown里的无序列表定义语法,但是要特别注意以下几点:
[] 里的内容表示菜单的标题,如果不写[]则代表这个菜单没有链接仅作为一个菜单名称。 () 里的内容表示菜单的markdown文件的地址,并且也代表了生成后的html文件url。
- 代表了在生成的html里默认展开这个菜单,需要注意的是,这不是markdown的语法,这是teadocs的规定, 一定要写在文本的前面,而不是[的前面
markdown模版
你编写的markdown文件可以使用内置的ejs模版引擎,比如我们可以轻而易举的写个循环,像这样:
代码语言:javascript复制**<** **%** **[****1****,****2****,****3****,****4****]****.****forEach****(****function** **(****)** **{** **%** **>**
**-** 欢迎使用Teadocs文档生成工具
**<** **%** **}****)** **%** **>**
效果:
<% [1,2,3,4].forEach(function () { %>
- 欢迎使用Teadocs文档生成工具 <% }) %>
自定义主题
你可以构建自己的主题文件,只要符合Teadocs的主题规范,具体可以自行参考默认主题。
如何使用自己构建的主题? 在 teadocs.config.js 文件的 theme.dir 配置项中指定你的自定义主题路径就可以了。
部署
上传到github
可以你的文档源文件上传到github上,使用 .gitignore 屏蔽 ./build 目录。
上传到服务器
建议使用nginx等静态服务器软件搭建一个静态服务器进行访问即可。
运行项目结果
代码语言:javascript复制teadocs dev
默认端口号是3210
docsify
https://docsify.js.org/#/zh-cn/ docsify是一个超级好用的文档站点生成器!特点是使用简单,跟着官网教程输入两行命令就能完成安装和生成站点了,生成的文档样式也很精简优雅,并且是响应式的,手机上看也很不错。
Dumi
https://d.umijs.org/zh-CN
阿里推出的文档站点生成工具,也是输入几行命令就能得到文档网站。和 docsify 不同的是,Dumi 专为 组件开发 场景而生,很适合作为组件库的文档。可以嵌入和折叠代码块、提供组件在终端中的浏览效果等,Dumi 生成的网站很精简,而且封面支持自定义特性的展示,因此也很适合作为项目或产品的官方文档。
参考文章:「https://blog.csdn.net/m0_46521785/article/details/119812280」