网站导航配置
规则
都有 sidebar,nav 根据配置显示与否
- 每个目录都提供并注册
sidebar.ts;是否出现在顶部 nav,在docs/.vitepress/nav.ts按需配置,与 sidebar 是否注册无关。
- 每个目录都提供并注册
qa 与 root 的 layout 独立
- 根站点:
docs/.vitepress/nav.ts(顶部导航)+docs/.vitepress/sidebar.ts(侧栏)。 qa:独立的docs/.vitepress/qaNav.ts,由theme/QaNav.vue、theme/QaNavScreen.vue在qa/路径下渲染,不进入根 nav。
- 根站点:
qa、me不展示 nav 入口qa走独立导航(见规则 2)。me有 sidebar,但不在 nav 注册。
新增目录流程
在目录内新建
sidebar.ts,按约定导出(导出命名items以便被复用):tsimport type { DefaultTheme } from 'vitepress' export const items: DefaultTheme.SidebarItem[] = [ { text: '分组', items: [{ text: '页面', link: '/<dir>/<page>' }] } ] export default { '/<dir>/': items } satisfies DefaultTheme.Sidebar在
docs/.vitepress/sidebar.ts中import并...spread合入。按需在
docs/.vitepress/nav.ts注册入口。若需与同类目录公用 sidebar,见下方约定。
Sidebar 约定
- 每个目录一个
sidebar.ts,导出命名items与默认路由表{ '/<dir>/': items }。 - 子目录可各自维护
sidebar.ts,由父级import后...spread合并(见js/sidebar.ts、vue/sidebar.ts、qa/sidebar.ts)。 - 隐藏目录(
me)同样提供并注册 sidebar,仅不写入 nav。 - 公用 sidebar:每个目录各自维护
sidebar.ts(配置不搬到别处);宿主目录import { items as <child> }后合并进自己的items,再把同一组items映射到多个路由 key。wx(小程序)→uni/sidebar.ts合并wx的items,映射'/uni/'、'/wx/'。dart、getx→flutter/sidebar.ts合并二者的items,映射'/flutter/'、'/dart/'、'/getx/'。skills→nav/sidebar.ts合并skills的items,映射'/nav/'、'/skills/'(收藏夹组在上)。
- 链接使用绝对路径(如
/code/git),目录首页用带斜杠的/xxx/。
Root sidebar 导入排序
docs/.vitepress/sidebar.ts 的导入按分组整理:
- 按分组聚合,同组导入相邻,组间空一行。
- 同组内,公用 sidebar 的宿主目录(有 nav 入口者)排在前面,其余随意。
- 末尾
sidebar合并(...spread)沿用相同顺序,但不保留空行。
分组顺序:语言基础 → Web 前端 → 跨端开发 → 工具(code)→ 收藏夹(nav)→ 隐藏 / 独立(me、qa)。
