VuePress側(cè)邊欄配置與useSidebar的使用方式
VuePress側(cè)邊欄配置與useSidebar的使用
在VuePress中,側(cè)邊欄(Sidebar)是一個(gè)重要的組成部分,用于組織文檔結(jié)構(gòu),提供給用戶方便的導(dǎo)航體驗(yàn)。
本文將詳細(xì)介紹如何配置側(cè)邊欄,并介紹如何使用 useSidebar 組合式函數(shù)來操作側(cè)邊欄的狀態(tài)。
單一側(cè)邊欄的配置
最簡單的側(cè)邊欄配置方式是通過一個(gè)數(shù)組來定義導(dǎo)航結(jié)構(gòu)。每個(gè)第一級的項(xiàng)目定義了一個(gè)“部分”(section),它應(yīng)該包含一個(gè)文本標(biāo)題(text)以及實(shí)際的導(dǎo)航鏈接(items)。
- 例如:
export default {
themeConfig: {
sidebar: [
{
text: 'Section Title A',
items: [
{ text: 'Item A', link: '/item-a' },
{ text: 'Item B', link: '/item-b' },
// 更多子項(xiàng)...
]
},
{
text: 'Section Title B',
items: [
{ text: 'Item C', link: '/item-c' },
{ text: 'Item D', link: '/item-d' },
// 更多子項(xiàng)...
]
}
]
}
}每個(gè)鏈接應(yīng)指定以 / 開頭的實(shí)際文件路徑。如果鏈接的末尾加上斜杠,則表示指向?qū)?yīng)目錄下的 index.md 文件。
多個(gè)側(cè)邊欄的配置
你可以根據(jù)頁面路徑來顯示不同的側(cè)邊欄。例如,你可以為不同的文檔部分配置單獨(dú)的側(cè)邊欄。
- 首先按需組織Markdown文件:
. ├─ guide/ │ ├─ index.md │ ├─ one.md │ └─ two.md └─ config/ ├─ index.md ├─ three.md └─ four.md
- 然后更新配置文件以定義每個(gè)部分的側(cè)邊欄:
export default {
themeConfig: {
sidebar: {
'/guide/': [
{
text: 'Guide',
items: [
{ text: 'Index', link: '/guide/' },
{ text: 'One', link: '/guide/one' },
{ text: 'Two', link: '/guide/two' }
]
}
],
'/config/': [
{
text: 'Config',
items: [
{ text: 'Index', link: '/config/' },
{ text: 'Three', link: '/config/three' },
{ text: 'Four', link: '/config/four' }
]
}
]
}
}
}可折疊的側(cè)邊欄組
在側(cè)邊欄中添加可折疊的功能,可以讓用戶通過點(diǎn)擊切換按鈕來隱藏或顯示某個(gè)部分的內(nèi)容。這有助于在內(nèi)容較多的情況下保持界面的整潔,并提供更好的用戶體驗(yàn)。
要配置可折疊的側(cè)邊欄組,可以在定義側(cè)邊欄的配置中為每個(gè)部分添加一個(gè) collapsed 屬性。
- 例如:
export default {
themeConfig: {
sidebar: [
{
text: 'Section Title A',
collapsed: false, // 默認(rèn)展開
items: [
{ text: 'Item A', link: '/item-a' },
{ text: 'Item B', link: '/item-b' },
// 更多子項(xiàng)...
]
},
{
text: 'Section Title B',
collapsed: true, // 默認(rèn)收起
items: [
{ text: 'Item C', link: '/item-c' },
{ text: 'Item D', link: '/item-d' },
// 更多子項(xiàng)...
]
}
]
}
}使用 useSidebar 組合式函數(shù)
useSidebar是一個(gè)組合式函數(shù),提供了與側(cè)邊欄相關(guān)數(shù)據(jù)的訪問。它返回一個(gè)包含多個(gè)響應(yīng)式引用(Ref)和一些實(shí)用函數(shù)的對象。
export interface DocSidebar {
isOpen: Ref<boolean>,
sidebar: ComputedRef<DefaultTheme.SidebarItem[]>,
sidebarGroups: ComputedRef<DefaultTheme.SidebarItem[]>,
hasSidebar: ComputedRef<boolean>,
hasAside: ComputedRef<boolean>,
leftAside: ComputedRef<boolean>,
isSidebarEnabled: ComputedRef<boolean>,
open: () => void,
close: () => void,
toggle: () => void
}- 使用
useSidebar的示例如下:
<script setup>
import { useSidebar } from '@vuepress/theme-default';
const { hasSidebar } = useSidebar();
</script>
<template>
<div v-if="hasSidebar">僅在存在側(cè)邊欄時(shí)顯示</div>
</template>通過這種方式,你可以更靈活地管理和控制側(cè)邊欄的行為,以增強(qiáng)用戶體驗(yàn)并使頁面布局更加動(dòng)態(tài)和響應(yīng)式。
總結(jié)
通過合理的側(cè)邊欄配置,可以顯著提升文檔的導(dǎo)航性和用戶體驗(yàn)。無論是單一的側(cè)邊欄還是根據(jù)不同路徑顯示的多個(gè)側(cè)邊欄,VuePress 都提供了豐富的配置選項(xiàng)。同時(shí),useSidebar 組合式函數(shù)進(jìn)一步增強(qiáng)了側(cè)邊欄的交互性和動(dòng)態(tài)性。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue + Echarts頁面內(nèi)存占用高的問題解決方案
點(diǎn)擊左側(cè)的菜單可以切換不同的看板,有些看板頁面中的報(bào)表比較多,用戶多次切換后頁面的內(nèi)存占用可以上升為GB級,嚴(yán)重時(shí)導(dǎo)致頁面內(nèi)存溢出,使得頁面崩潰,極大影響了用戶體驗(yàn),本文給大家介紹Vue + Echarts頁面內(nèi)存占用高的問題解決方案,感興趣的朋友一起看看吧2024-02-02
vue+element-plus上傳圖片及回顯問題及數(shù)量限制
本文主要介紹了vue+element-plus上傳圖片及回顯問題及數(shù)量限制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
vue.js項(xiàng)目 el-input 組件 監(jiān)聽回車鍵實(shí)現(xiàn)搜索功能示例
今天小編就為大家分享一篇vue.js項(xiàng)目 el-input 組件 監(jiān)聽回車鍵實(shí)現(xiàn)搜索功能示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
通過命令行創(chuàng)建vue項(xiàng)目的方法
這篇文章主要介紹了通過命令創(chuàng)建vue項(xiàng)目的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
Vue 刷新當(dāng)前路由的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue 刷新當(dāng)前路由的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Vue3前端做打印頁面信息實(shí)現(xiàn)打印功能(打印界面某個(gè)部分)
這篇文章主要介紹了如何使用vue3-print-nb依賴在Vue?3項(xiàng)目中實(shí)現(xiàn)頁面打印功能,提供了完整的代碼示例,大家可以根據(jù)項(xiàng)目需求選擇合適的打印方法,需要的朋友可以參考下2025-02-02
Vue +WebSocket + WaveSurferJS 實(shí)現(xiàn)H5聊天對話交互的實(shí)例
這篇文章主要介紹了Vue +WebSocket + WaveSurferJS 實(shí)現(xiàn)H5聊天對話交互的實(shí)例,幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下2020-11-11

