# docsify

:一个 SSG 工具,用于制作静态网站。它与 gitbook 相似,但功能多一些。

  • 官方文档 (opens new window)
  • 采用 Vue 前端框架,显示美观的网页。
  • 使用它时,无需安装 npm 插件,只需引入一个 java script 文件。
    • 使用它时,不需要事先将 MarkDown 文件转换成 HTML 文件。当用户查看网页时,才会在浏览器中即时渲染成 HTML 。
    • 因此不需要事先构建网站,但不利于 SEO 。
  • 会显示文章目录。
    • 目录可以折叠显示,不过只能以 MarkDown 文件为单位进行折叠。

# 用法示例

  1. 在网站根目录下创建一个 index.html 文件,内容如下:

    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <meta name="viewport" content="width=device-width,initial-scale=1" />
        <meta charset="UTF-8" />
        <link
          rel="stylesheet"
          href="//cdn.jsdelivr.net/npm/docsify@4/themes/vue.css"
        />
      </head>
      <body>
        <div id="app"></div>
        <script>
          window.$docsify = {
            //...
          };
        </script>
        <script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
      </body>
    </html>
    
  2. 再创建一个 README.md 文件,为该页面提供显示内容:

    echo Hello > README.md
    
  3. 启动一个 Web 服务器:

    python3 -m http.server 80
    

# 目录结构

以下是 docsify 网站的目录结构示例:

.
├─ docs           # 可以给该目录单独编写 sidebar.md、navbar.md ,否则使用上一级目录的
│  ├─ Chapter1    # 可以给该目录单独编写 sidebar.md、navbar.md ,否则使用上一级目录的
│  │  ├─ 1.md
│  │  └─ 2.md
│  └─ Chapter2
│     └─ 1.md
├─ index.html     # 网站的入口点
├─ navbar.md
└─ sidebar.md
  • index.html 所在目录是网站的根目录,**任何文件中使用的相对路径的 URL ,都必须从这里开始。**因为 docsify 网站是纯 SPA 网站,当前目录始终停留在网站根目录,不能移动。

# 配置

# 侧边栏

在 index.html 中加入配置:

window.$docsify = {
  loadSidebar: 'sidebar.md',  // 显示侧边栏目录
}

侧边栏中的目录结构由 URL 所在目录下的 sidebar.md 决定,如下:

# 目录

- [第一章](Chapter1/)         # 如果不指定.md 文件,则默认读取该目录下的 README.md
  - [第一节](Chapter1/1.md)
  - [第二节](Chapter1/2.md)
- 第二章                      # 可以不给链接,只显示名字
  - [第一节](Chapter2/1.md)
  • 可以给各个目录分别创建 sidebar.md ,从而显示不同的侧边栏目录。
    • 如果 URL 所在目录下没有 sidebar.md ,则使用上一层目录的。
    • navbar.md 的用法同理。

# 导航栏

在 index.html 中加入配置:

<nav>
  <<a href="#/">Navbar</a>   # 在页面顶部显示导航栏
</nav>
<div id="app"></div>
<script>
  window.$docsify = {
    loadNavbar: 'navbar.md'    # 启用导航栏的下拉列表
  }
</script>

导航栏的下拉列表由 URL 所在目录下的 navbar.md 决定,如下:

- [第一章](Chapter1/)
  - [第一节](Chapter1/1.md)
  - [第二节](Chapter1/2.md)
- 第二章
  - [第一节](Chapter2/1.md)

# 封面

docsify 默认没有显示封面,需要在 index.html 中加入如下配置:

window.$docsify = {
  coverpage: 'coverpage.md'   // 显示首页的封面
  // coverpage: ['/', '/Chapter1/', '/Chapter2/']   // 给多个目录分别显示封面
}

coverpage.md 的内容必须遵守以下格式:

# docsify

- Simple and lightweight (~12kb gzipped)
- Multiple themes
- Not build static html files

[GitHub](https://github.com/docsifyjs/docsify/)   # 显示一个链接
[第一章](Chapter1/)

# 网页图标

在 index.html 的 head 部分导入网页图标:

<link rel="icon" href="static/img/logo.ico" type="image/x-icon"/>

# 其它配置

window.$docsify = {
  name: '',        // 侧边栏顶部显示的文档标题
  nameLink: '/',   // 文档标题指向的链接
  repo: '',        // 在页面右上角显示一个到 GitHub 的链接
  maxLevel: 3,     // 解析 MarkDown 文件时的最大目录层数
  subMaxLevel: 4,  // 侧边栏目录的最大层数
  auto2top: true,  // 切换显示的文档时,自动跳转到页面顶部
}

# 扩展功能

# 搜索框

添加如下配置,即可在侧边栏上方显示一个搜索框,可对所有页面进行全文搜索:

<script>
window.$docsify = {
  search: {
      paths: 'auto',
      placeholder: 'Search',
      noData: 'No Results!',
  }
}
</script>
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>

# 嵌入图片

![logo](https://docsify.js.org/_media/icon.svg ':size=50x100')
![logo](https://docsify.js.org/_media/icon.svg ':size=100')

# 嵌入文件

从 docsify 4.6 开始,在 Markdown 中引用链接时,加上 ':include' 即可嵌入目标文件。

支持的文件类型 文件扩展名
iframe .html .htm
markdown .markdown .md
audio .mp3
video .mp4 .ogg
code other file extension

例:

[](example.md ':include :type=markdown')
[](https://www.baidu.com/index.html ':include :type=iframe width=100% height=400px')

# 代码高亮

导入 Prism (opens new window) 的 js 文件之后,即可实现 MarkDown 文档代码块语法高亮。例如以下是支持 bash、C 语言的语法高亮:

<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-c.min.js"></script>

# 分页按钮

在 index.html 中添加如下脚本,即可在每个页面的底部显示跳转到前一文件、后一文件的按钮:

<script src="//unpkg.com/docsify-pagination/dist/docsify-pagination.min.js"></script>

# 使用主题

https://jhildenbiddle.github.io/docsify-themeable/#/ (opens new window)