Skip to content

结构化目录

目录结构

在运行或构建 Teek 时,Teek 会按照目录结构自动生成一个结构化的 侧边栏目录树面包屑文章列表文章分析 等数据。

侧边栏和目录树的标题获取有如下特性:

  • 针对文件夹,先分别扫描该文件夹下的 index.mdindex.MD[文件夹名].md 文件,并尝试获取里面的一级标题,如果获取到一级标题,则使用,否则使用文件夹名
  • 针对 Markdown 文档,其获取顺序:formatter.title > Markdown 文件一级标题 > Markdown 文件名

面包屑的标题默认按照 Markdown 文件所在的目录层级名进行获取。

Teek 建议给每个 Markdown 文件设置 formatter.title,且文件的命名与 formatter.title 保持一致。

提示

侧边栏数据会在文章页左侧生成菜单,目录树数据会在目录页生成目录,面包屑数据会在文章页生成面包屑。

特殊目录

Teek 的自动生成侧边栏,自动生成 frontmatter、自动生成 h1 标题、站点分析功能在 Vitepress 启动后,从根目录扫描 Markdown 文件,但是有部分目录会忽略扫描:

  • @pages:该目录初衷是存放归档页、分类页、标签页等非文章的 Markdown 文件,它完全不会被 Teek 扫描,它是非常纯净的目录
  • @fragment:该目录下的 Markdown 文件不会自动生成侧边栏,因此一些 碎片化 文章建议放在该目录下
  • /目录页/:该命名的目录(正则表达式,如 01.目录页 也符合)初衷是提供一个专门存放目录页的 Markdown 文件,因此统计站点文章数、文章总数等功能不会扫描该目录,文章列表和归档页也不会扫描该目录
碎片化文章说明

特点

  • 简短且独立:每个碎片化文章通常只涵盖一个具体的知识点或主题,篇幅较短
  • 灵活性高:可以随时添加、修改或删除,不受整体结构的严格限制
  • 易于管理:由于其独立性,管理和查找特定知识点更加方便
  • 补充性质:通常作为主干内容的补充,提供额外的信息或细节

示例场景

  • 技术笔记:例如某个命令的用法、某个库的简单示例等
  • 个人心得:如读书笔记、会议纪要等
  • 临时记录:开发过程中遇到的问题及解决方案

命名约定

和 vdoing 一样,Teek 也建议使用以下命名约定:

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

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

当然可以使用非序号的命名,这并不影响使用,添加序号只是为了排序,且更具有结构化,如果同一个目录下同时存在带序号和不带序号的文件,在生成侧边栏时,Teek 会分为两个区:带序号区和不带序号区,两个区内部按照各自的逻辑排序,在最终生成侧边栏的时候,不带序号区始终放在带序号区的后面。

目录层级

Teek 生成侧边栏或目录树的数据时,虽然支持无限层嵌套,但是建议不要超过 5 层。

目录结构例子

sh
.
 (不参与数据生成)
├─ .vitepress
├─ @pages
├─ @fragment
├─ index.md
├─ package.json

  (以下部分参与数据生成)
├─ 01.指南
  index.md
  ├─ 01.指南 - 使用
  ├── 04.使用 - 登录认证.md
  ├── 07.使用 - 权限认证.md
  ├── 10.使用 - 登出下线.md
  ├── 13.使用 - 注解鉴权.md
  ├── 16.使用 - 路由拦截鉴权.md
  ├── 19.使用 - Session 会话.md
  ├── 22.使用 - 框架配置.md
  ├── 25.使用 - 自定义 Token.md
  ├── 28.使用 - 临时 Token 认证.md
  ├── 31.使用 - 记住我模式.md
  ├── 34.使用 - 二级认证.md
  ├── 37.使用 - 身份切换.md
  ├── 40.使用 - 账号封禁.md
  ├── 43.使用 - 会话查询.md
  ├── 46.使用 - Http Basic 认证.md
  ├── 49.使用 - 全局侦听器.md
  ├── 52.使用 - 全局过滤器.md
  ├── 55.使用 - 多账号认证.md
  ├── 58.使用 - 自定义注解.md
  └─ 99.三级目录测试
  ├── 01.测试1.md
  ├── 03.测试2.md
  ├── index.md
   └─ 99.四级目录测试
   ├── 01.测试1.md
   ├── 03.测试2.md
   ├── index.md
  ├─ 05.指南 - 环境集成
  ├── 04.环境集成 - Spring Boot.md
  ├── 07.环境集成 - Spring WebFlux.md
  ├── 99.环境集成 - 上下文组件开发指南.md
  └─ 10.指南 - 插件
  ├── 04.插件 - 持久层集成 Redis.md
  ├── 07.插件 - 持久层拓展.md
  ├── 10.插件 - AOP 注解鉴权.md
  ├── 13.插件 - Token 集成 JWT.md
  ├── 99.插件 - 插件开发指南.md
├─ 05.设计
  00.目录.md
  ├─ 01.设计 - 思路
  01.设计 - 思路设计.md
  04.设计 - 模块设计.md
  07.设计 - 术语说明.md
  10.设计 - 全局配置.md
  13.设计 - 策略模式.md
  16.设计 - 异常模型.md
  18.设计 - 管理者模型.md
  ├─ 03.设计 - Helpers
  ├── 01.设计 - Helpers 说明.md
  ├── 07.设计 - 账号登录.md
  ├── 10.设计 - 账号登出.md
  ├── 13.设计 - 账号封禁.md
  ├── 16.设计 - 二级认证.md
  ├── 19.设计 - 身份切换.md
  ├── 22.设计 - 账号认证.md
  ├── 25.设计 - 临时 Token.md
  ├── 28.设计 - 同源 Token.md
  ├── 31.设计 - Http Basic 认证.md