首页/新闻资讯/正文详情

VitePress 默认主题侧边栏(Sidebar)配置完全指南:分组、多侧边栏、折叠与路径前缀

发布时间:2026/9/21 1:39:40 来源:云帆数科 栏目:资讯中心
VitePress 默认主题侧边栏(Sidebar)配置完全指南:分组、多侧边栏、折叠与路径前缀
VitePress 默认主题侧边栏Sidebar配置完全指南分组、多侧边栏、折叠与路径前缀【免费下载链接】vitepressVite Vue powered static site generator.项目地址: https://gitcode.com/gh_mirrors/vi/vitepress侧边栏是 VitePress 文档站点的核心导航模块它承担着让读者理解站点信息架构、快速定位目标页面的职责。本文基于 VitePress 默认主题系统讲解themeConfig.sidebar的完整配置能力从最简单的链接数组到按路由区分的多侧边栏对象、可折叠分组再到base路径前缀的自动化拼接并结合仓库源码与类型定义说明其底层解析逻辑。读完本文你将能独立为任意文档站设计出结构清晰、可折叠、可多区域切换的侧边栏。侧边栏配置入口themeConfig.sidebar侧边栏菜单在主题配置的themeConfig.sidebar字段中定义完整配置可参考 默认主题配置文档。其最基础的形式是传入一个链接数组export default { themeConfig: { sidebar: [ { text: Руководство, items: [ { text: Введение, link: /ru/introduction }, { text: Первые шаги, link: /ru/getting-started }, ... ] } ] } }从类型定义看见 types/default-theme.d.tsSidebar类型为SidebarItem[] | SidebarMulti数组形式用于单一侧边栏对象形式SidebarMulti用于按路径区分的多侧边栏每个SidebarItem可选字段包括text、link、items、collapsed、base以及docFooterText、rel、target等链接辅助属性。基础用法数组形式的侧边栏结构最简单的侧边栏形式是直接传入一个链接数组。第一层元素定义侧边栏的「分区section」它必须包含text分区标题和items实际的导航链接export default { themeConfig: { sidebar: [ { text: Заголовок секции A, items: [ { text: Пункт A, link: /item-a }, { text: Пункт B, link: /item-b }, ... ] }, { text: Заголовок секции B, items: [ { text: Пункт C, link: /item-c }, { text: Пункт D, link: /item-d }, ... ] } ] } }链接路径的书写规则每个link都必须指向以/开头的实际文件路径。如果链接以斜杠结尾VitePress 会解析为该目录下的index.mdexport default { themeConfig: { sidebar: [ { text: Руководство, items: [ // Ссылка на страницу /ru/guide/index.md { text: Введение, link: /ru/guide/ } ] } ] } }嵌套层级上限6 层侧边栏项支持从根级开始向下嵌套最多 6 层。超过 6 层的嵌套项会被忽略不会显示在侧边栏上export default { themeConfig: { sidebar: [ { text: Уровень 1, items: [ { text: Уровень 2, items: [ { text: Уровень 3, items: [ ... ] } ] } ] } ] } }从源码角度看这一限制由 VPSidebarItem.vue 中的渲染条件v-ifdepth 5实现递归组件每深入一层depth加一当depth达到 5即渲染到第 6 层时便不再继续递归与文档描述的「6 层上限」完全对应。同时该组件还根据层级动态选择标题标签h${props.depth 2}保证第 0 层分区使用h2、更深层使用h3及以下为文档站提供语义化的标题结构。多侧边栏Multiple Sidebars按路由切换当文档包含多个相互独立的内容区块例如「指南」与「配置」时可以为不同路径配置不同的侧边栏。首先将页面按区块组织到各自的目录中. ├─ guide/ │ ├─ index.md │ ├─ one.md │ └─ two.md └─ config/ ├─ index.md ├─ three.md └─ four.md然后将sidebar从数组改为对象以路径前缀作为键为每个目录定义专属侧边栏export default { themeConfig: { sidebar: { // Эта боковая панель отображается, когда пользователь находится в директории guide /guide/: [ { text: Руководство, items: [ { text: Index, link: /guide/ }, { text: One, link: /guide/one }, { text: Two, link: /guide/two } ] } ], // Эта боковая панель отображается, когда пользователь находится в директории config /config/: [ { text: Настройка, items: [ { text: Index, link: /config/ }, { text: Three, link: /config/three }, { text: Four, link: /config/four } ] } ] } } }匹配规则与源码实现多侧边栏的匹配逻辑在 support/sidebar.ts 的getSidebar函数中实现。其核心算法是将配置对象的所有键按路径段数降序排序b.split(/).length - a.split(/).length然后找出第一个与当前路径匹配的键从而保证「/multi-sidebar/nested/这样的深层路径优先于/multi-sidebar/与/」被命中。该函数对guide/与/guide/两种写法都做了归一化处理ensureStartingSlash。对应测试见tests/unit/client/theme-default/support/sidebar.test.ts分别覆盖了键顺序正常、键顺序反转以及嵌套键三种场景验证了「未命中任何键时回退到/侧边栏」的行为。若没有任何键匹配getSidebar返回空数组此时侧边栏不显示。可折叠分组Collapsible Sidebar Groups在侧边栏分组上添加collapsed选项即可为每个分区显示展开/收起切换按钮export default { themeConfig: { sidebar: [ { text: Заголовок секции A, collapsed: false, items: [...] } ] } }所有分区默认是「展开」状态。如果希望页面初次加载时分区「收起」将collapsed设为trueexport default { themeConfig: { sidebar: [ { text: Заголовок секции A, collapsed: true, items: [...] } ] } }折叠交互的源码细节折叠行为由 composables/sidebar.ts 的useSidebarItemControl组合式函数驱动collapsible判定依据是item.value.collapsed ! null——即只有显式指定了collapsed的分组才会出现折叠按钮未指定时分组不可折叠展开/收起状态通过watchEffect与item.value.collapsed保持同步collapsed.value !!(collapsible.value item.value.collapsed)当分组内任一链接处于激活状态时hasActiveLink分组会自动展开nextTick(() (collapsed.value false))确保用户通过 URL 直达或切换页面时能看到当前所在的分组内容避免「激活链接被折叠隐藏」的困惑激活状态判断依赖 support/sidebar.ts 中的hasActiveLink它会递归遍历嵌套items检测是否存在匹配当前路径的链接。在模板层面VPSidebarItem.vue折叠按钮仅在「显式设置collapsed且存在子项」时渲染并通过aria-expanded暴露折叠状态、通过aria-labeltoggle section提供无障碍语义。分区样式上level-0激活链接左侧会有主题色指示条var(--vp-c-brand-1)帮助用户定位当前位置。路径前缀base消除重复路径当文档结构包含深层目录、或多个分组同处于一个子目录时可以使用base选项为组内所有嵌套items自动拼接路径前缀从而避免为每个link重复书写相同的路径。base在多侧边栏配置与嵌套侧边栏分组中均受支持。在多侧边栏中使用base可以在某个侧边栏分区的配置根部定义baseexport default { themeConfig: { sidebar: { /guide/: { base: /guide/, items: [ // Эта ссылка будет разрешена в /guide/introduction { text: Введение, link: introduction }, // Эта ссылка будет разрешена в /guide/getting-started { text: Первые шаги, link: getting-started } ] } } } }在嵌套分组中使用basebase同样可用于嵌套分组此时它作用于该分组的直接子项。嵌套的base会覆盖父分组的路径前缀export default { themeConfig: { sidebar: [ { text: Справочник, base: /reference/, items: [ // Эта ссылка будет разрешена в /reference/site-config { text: Конфигурация сайта, link: site-config }, { text: Тема по умолчанию, // Вложенный base переопределяет префикс пути родительской группы base: /reference/default-theme-, items: [ // Эта ссылка будет разрешена в /reference/default-theme-nav { text: Навигация, link: nav }, // Эта ссылка будет разрешена в /reference/default-theme-sidebar { text: Сайдбар, link: sidebar } ] } ] } ] } }base拼接的源码实现base的解析发生在 support/sidebar.ts 的addBase函数中。它递归遍历侧边栏项遵循以下规则每个项优先使用自身的base否则继承父级传入的_base只有当项存在link且不是外部链接!isExternal(item.link)时才拼接前缀——外部链接如https://...会被原样保留拼接时处理斜杠边界如果链接以/开头而base以/结尾则去掉链接开头的斜杠以避免双斜杠若base不以/结尾则补上/拼接后的前缀会继续沿items向下传递addBase(item.items, base)实现整棵子树的前缀继承。这一行为有对应的单元测试验证见 sidebar.test.ts测试「applies base only to internal links」确认了base仅作用于站内链接——相对链接intro被解析为/en/intro以/开头的root被解析为/en/root而https://example.com/这类外部链接不受base影响。侧边栏与页面的联动激活态与分组聚合除了配置本身理解侧边栏如何「感知」当前页面有助于排查问题。getSidebar之后主题还会通过 getSidebarGroups 将「无items的平铺链接」自动聚合进前一个分组保证渲染结构的统一而 getFlatSideBarLinks 则会递归展平所有嵌套链接并保留docFooterText、rel、target元数据这些数据被「上一页/下一页」导航与搜索等功能复用。在 SSR 与客户端水合阶段useSidebarItemControl会在 setup 期间执行一次updateActiveLink(true)跳过 hash 检查以保证服务端渲染的输出中也带有正确的激活样式并在路由变化、组件挂载后重新计算精确的激活链接composables/sidebar.ts。侧边栏整体的显隐则由hasSidebar与sidebarGroups驱动见 VPSidebar.vue在窄屏下作为抽屉式导航呈现、宽屏下常驻页面左侧。小结本文完整覆盖了 VitePress 默认主题侧边栏的四种核心配置能力数组形式的单一侧边栏含 6 层嵌套上限与/结尾解析index.md的规则、对象形式的多侧边栏按路径前缀切换并支持深层键优先匹配、collapsed可折叠分组默认展开、可设置初始收起、激活时自动展开以及base路径前缀支持多侧边栏根部与嵌套分组内定义、可覆盖继承、对外部链接豁免。结合 types/default-theme.d.ts 的类型定义、support/sidebar.ts 的解析逻辑与 单元测试 的验证用例你可以放心地依据这些规则搭建出适配任意文档架构的导航体系。【免费下载链接】vitepressVite Vue powered static site generator.项目地址: https://gitcode.com/gh_mirrors/vi/vitepress创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

OpenClaw、Claude Code、Codex CLI、Hermes Agent四款AI Agent横评与选型指南
OpenClaw、Claude Code、Codex CLI、Hermes Agent四款AI Agent横评与选型指南

最近我手上的活儿几乎都变成了同一个模式:先让 Agent 跑一遍,我再接手改。AI 编程工具和个人助手 Agent 爆发的速度太快,后台问得最多的就是 OpenClaw、Hermes Agent、Claude Code、Codex CLI 这四款到底该用哪个。这篇文章就来自我这几个月实… · 2026/9/21 1:39:40

lightweight-charts 调试沙箱完全指南:基于 debug 目录搭建本地开发与试验环境
lightweight-charts 调试沙箱完全指南:基于 debug 目录搭建本地开发与试验环境

lightweight-charts 调试沙箱完全指南:基于 debug 目录搭建本地开发与试验环境 【免费下载链接】lightweight-charts Performant financial charts built with HTML5 canvas 项目地址: https://gitcode.com/gh_mirrors/li/lightweight-charts 本文围绕 debug/… · 2026/9/21 1:39:40

BrowserSkill截图指南:视口、元素、整页3种模式与参数速查表
BrowserSkill截图指南:视口、元素、整页3种模式与参数速查表

BrowserSkill截图指南:视口、元素、整页3种模式与参数速查表 【免费下载链接】BrowserSkill Let AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent. 项目地… · 2026/9/21 1:39:40

线扫相机触发方案全解析:编码器选型、分辨率匹配与调试避坑
线扫相机触发方案全解析:编码器选型、分辨率匹配与调试避坑

1. 线扫相机触发到底在解决什么问题线扫相机和面阵相机最大的区别,在于它每次只拍一条线。面阵相机是“咔嚓”一下拿一整幅图,线扫相机则是像扫描仪一样,一行一行地把图像拼出来。这就带来一个绕不开的问题:相机什么时候该拍下一行… · 2026/9/21 2:24:48

STM32外设DeInit()函数详解:为何必须与Init成对使用
STM32外设DeInit()函数详解:为何必须与Init成对使用

简介:一份讲解STM32中DeInit()函数作用与必要性的PDF资料,面向嵌入式开发者和高校单片机学习者。文档围绕“为什么每个STM32模块都提供DeInit()”这一常见疑惑,先厘清Init()负责配置工作模式、波特率、中断等并启动模块,而DeInit(… · 2026/9/21 2:24:48

宏基因组功能注释实战:CAZyme与VFDB数据库搭建及DIAMOND比对全流程
宏基因组功能注释实战:CAZyme与VFDB数据库搭建及DIAMOND比对全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 2:24:48

BrowserSkill VOM视觉观察模型解析:从页面构建语义图的完整流程
BrowserSkill VOM视觉观察模型解析:从页面构建语义图的完整流程

BrowserSkill VOM视觉观察模型解析:从页面构建语义图的完整流程 【免费下载链接】BrowserSkill Let AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent. 项… · 2026/9/21 2:24:48

DBX CLI 数据库安全查询与 Schema 探索指南:面向 AI Agent 的命令行操作手册
DBX CLI 数据库安全查询与 Schema 探索指南:面向 AI Agent 的命令行操作手册

DBX CLI 数据库安全查询与 Schema 探索指南:面向 AI Agent 的命令行操作手册 【免费下载链接】dbx 25 MB lightweight cross-platform database client for 90 databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. B… · 2026/9/21 2:24:48

硅基集成光电子:核心材料体系与集成路线全解析
硅基集成光电子:核心材料体系与集成路线全解析

简介:《新型硅基集成微电子及光电子的材料》是一份面向微电子、光电子及相关专业学生与技术人员的PPT文档,系统讲解硅基集成微电子与光电子材料领域的关键技术。内容以摩尔定律为线索,梳理IC集成度每两年翻一番、特征尺寸持续缩小的产业规律&… · 2026/9/21 2:23:47

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/21 0:02:39

Word表格编号全攻略:从列表编号到题注交叉引用
Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/21 0:02:39

从第一个站到第二个站:独立开发者的静态网站选型与落地实践
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41

Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行
Claude Code 按智谱AI指南装完,ANTHROPIC_BASE_URL 改走 TaoToken 兼容通道行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/21 0:00:18

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程
agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and … · 2026/9/21 0:00:18

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,… · 2026/9/21 0:00:18

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码