Skip to content

构建结构化站点的核心配置和约定

本主题遵循“约定优于配置”原则,如果你想构建一个结构化的站点,需要遵循下面这些约定,约定可以为你省去很多配置,轻松拥有一个结构清晰的站点。

你需要在config.js中有如下配置:

js
// config.js
module.exports = {
  themeConfig: {
     sidebar: 'structuring' //  'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义
  }
}

在运行开发服务npm run dev或打包npm run build时主题内部将会按照目录约定自动生成一个结构化的侧边栏、目录页、面包屑等数据。

在源目录(一般是docs)文件夹中,除了.vuepress@pages_postsindex.md 或 README.md之外的文件夹将会为其生成对应的侧边栏。生成的顺序取自序号,标题取自文件(夹)名称。

命名约定

  • 无论是文件还是文件夹,请为其名称添加上正确的正整数序号.,从0001开始累计,如01.文件夹02.文件.md,我们将会按照序号的顺序来决定其在侧边栏当中的顺序。
  • 同一级别目录别内即使只有一个文件或文件夹也要为其加上序号。

提示

序号只是用于决定先后顺序,并不一定需要连着,如01、02、03...,实际工作中可能会在两个文章中间插入一篇新的文章,因此为了方便可以采用间隔序号10、20、30...,后面如果需要在1020中间插入一篇新文章,可以给定序号15

级别说明

源目录(一般是docs)底下的级别现在我们称之为一级目录一级目录的下一级为二级目录,以此类推,最多只能到四级目录

  • 一级目录

    1. .vuepress@pages_postsindex.md 或 README.md 这些文件(文件夹)不参与数据生成。
    2. 序号非必须。(如一些专栏,可以不用序号)
  • 二级目录

    1. 该级别下可以同时放文件夹和.md文件,但是两者序号要连贯(参考下面的例子中的其他)。
    2. 必须有序号
  • 三级目录

    • (同上)
  • 四级目录

    v1.6.0 +

    1. 该级别下只能.md文件。
    2. 必须有序号

所有级别内至少有一个文件或文件夹。

目录结构例子

html
.
├── docs
│   │  (不参与数据生成)
│   ├── .vuepress
│   ├── @pages
│   ├── _posts
│   ├── index.md
│   │
│   │ (以下部分参与数据生成)
│   ├── 《JavaScript教程》专栏 (一级目录)
│   │   ├── 01.章节1 (二级目录)
│   │   |   ├── 01.js1.md (三级目录-文件)
│   │   |   ├── 02.js2.md
│   │   |   └── 03.js3.md
│   │   └── 02.章节2 (二级目录)
│   │   |   ├── 01.jsa.md
│   │   |   ├── 02.小节 (三级目录)
│   │   |   |   └── 01.jsxx.md (四级目录-文件)
│   ├── 01.前端
│   │   ├── 01.JavaScript
│   │   |   ├── 01.js1.md
│   │   |   ├── 02.js2.md
│   │   |   └── 03.js3.md
│   │   └── 02.vue
│   │   |   ├── 01.vue1.md
│   │   |   └── 02.vue2.md
│   ├── 02.其他
│   │   ├── 01.学习
│   │   |   ├── 01.xxa.md
│   │   |   └── 02.xxb.md
│   │   ├── 02.学习笔记
│   │   |   ├── 01.xxa.md
│   │   |   └── 02.xxb.md
│   │   ├── 03.文件x.md
│   │   └── 04.文件xx.md
│   └── 03.关于我
│   │   └── 01.关于我.md
.   .

如何知道侧边栏数据有没有正确生成?

在运行开发服务时(npm run dev),在命令行查看打印记录,如果正确生成会有这样的绿色提示记录:

bash
tip: add sidebar data. 侧边栏数据添加成功。

如果有未按约定的文件,会有黄色警告记录,如:

bash
warning:  该文件'xxx'序号出错,请填写正确的序号。
最近更新