VitePress學習筆記

VitePress學習筆記

  • VitePress學習
    • 搭建和運行
    • 編寫內容
      • md
      • vue
    • 配置
      • 站點配置
      • 配置search
        • search 提示詞替換
      • 使用第三方主題
      • 自定義主題
      • 設置文檔根目錄
    • 國際化
      • 文檔
      • nav
      • sidebar
      • search
      • 其他
    • 插件
      • vitepress插件
      • markdown-it插件
  • 項目開發
    • 原始需求和方案
    • 自動化流程
    • 權限限制

VitePress學習

搭建和運行

搭建和運行很簡單,多看文檔。
在這里插入圖片描述
如果你是在自己的項目中增加vitepress在項目中安裝即可,需要全局安裝的話加 -g

npm add -D vitepress

初始化項目,在想要初始化的目錄中執行

npx vitepress init

根據喜好配置,目錄以及標題等等。
在這里插入圖片描述
運行

npm run docs:dev

如果你是全局安裝的vitepress,可能直接執行這個命令是不行的。
因為項目目錄無依賴。
在這里插入圖片描述
需要執行

npm i -D vitepress

或者你使用全局的vitepress

npx vitepress dev ./vitepress

不過還是建議安裝到項目這樣依賴明細更清楚。
我這里用的是v1.6.3當然你可以使用最新的
在這里插入圖片描述

運行起來后
在這里插入圖片描述

這里是home頁面,對應文件為index.md
在這里插入圖片描述
這種寫法是fontmatter

你也可以不用這種寫法,用常規md寫。

編寫內容

md

支持基礎的md以及拓展,見文檔https://vitepress.dev/zh/guide/markdown

可以自己嘗試。
在這里插入圖片描述

vue

由于vitepress是基于vue的,他是可以使用vue來嵌入到md的。
見文檔https://vitepress.dev/zh/guide/using-vue

<script setup>
import { ref } from 'vue'const count = ref(0)
</script>## Markdown ContentThe count is: {{ count }}<button :class="$style.button" @click="count++">Increment</button><style module>
.button {color: red;font-weight: bold;
}
</style>

使用組件

<script setup>
import CustomComponent from '../../components/CustomComponent.vue'
</script># DocsThis is a .md using a custom component<CustomComponent />

基本上vue的寫法都支持。

配置

站點配置

https://vitepress.dev/zh/reference/site-config
文件位置.vitepress/config.mts

在這里插入圖片描述
可以自己嘗試,對照文檔。其實也不用記,用的時候查閱一下就行。

配置search

開啟這個配置。我們使用本地檢索local。
內嵌的是minisearch,你可以查看minisearch文檔來額外的配置,或者看ts定義

文檔位置https://vitepress.dev/zh/reference/default-theme-search#mini-search-options
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

search 提示詞替換

見文檔https://vitepress.dev/zh/reference/default-theme-search#local-search-i18n
可以先不配置i18n來直接修改文本內容,比如

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

使用第三方主題

比如vitepress-theme-teek 在npmjs上搜vitepress-theme可以搜到很多,這里舉個例子,具體配置還是要看第三方主題的文檔的。

npm i vitepress-theme-teek

在.vitepress目錄下心中theme/index.ts文件

import Teek from 'vitepress-theme-teek';
import 'vitepress-theme-teek/index.css';export default {extends: Teek,
};

在config.mts中,把原先的配置傳遞給第三方主題的defineTeekConfig
在這里插入圖片描述

在這里插入圖片描述

自定義主題

vitepress學習-自定義主題
在這里插入圖片描述
大概就是利用useData獲取運行時的數據,然后可以重寫一套我們自己的布局和組件。渲染還是用vitepress 內置的markdown-it。

取數據和某些渲染場景的話,看這個
https://vitepress.dev/zh/reference/runtime-api#content

設置文檔根目錄

比如想把文檔丟丟在docs目錄中
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
其他的不要動,

國際化

國際化需要寫多套文檔,每個語言的都寫一遍,不過應該可以通過第三方插件來快速完成。

文檔

試一下正常的配置。
首先我們準備三個文件
一個是默認語言的,其他兩個是其他語言的。

在這里插入圖片描述
在這里插入圖片描述
默認是中文。
在這里插入圖片描述
這里切換后,發現路徑會變化的,其實就是文檔路徑對吧。
在這里插入圖片描述
在這里插入圖片描述
除了內容的國際化,還有其他的國際化,如nav,sidebar還有搜索框。

nav

這里把配置拆分下,不同語言丟到不同的配置文件里面。
在這里插入圖片描述

在這里插入圖片描述

import { LocaleConfig } from 'vitepress';const JapaneseConfig: LocaleConfig = {jp: {label: '日本語',lang: 'jp',themeConfig: {nav: [{ text: 'ホーム', link: '/' },{ text: '例', link: '/markdown-examples' },],},},
};export default JapaneseConfig;

現在就是這樣了.
在這里插入圖片描述

其實就是再寫一遍日語的配置。此時沒有單獨配置themeConfig的用的還是公用的配置。
在這里插入圖片描述

sidebar

在日語配置文件里面增加一個sidebar配置

const JapaneseConfig: LocaleConfig = {jp: {label: '日本語',lang: 'jp',themeConfig: {nav: [{ text: 'ホーム', link: '/' },{ text: '例', link: '/jp/markdown-examples' },],sidebar: [{text: '例',items: [{ text: 'マークダウン例', link: '/jp/markdown-examples' },{ text: 'ランタイム API 例', link: '/jp/api-examples' },],},],},},
};

在這里插入圖片描述
現在是不能點擊側邊欄的,只是現實成日文了,jp文件夾下沒有這兩個文件的。只是改了側邊欄的語言顯示。

search

search本地搜索用的是minisearch。
搜索欄配置國際化,先配置一個默認的。

 search: {provider: 'local',options: {translations: {button: {buttonText: '搜索文檔',buttonAriaLabel: '搜索文檔',},modal: {noResultsText: '無法找到相關結果',resetButtonTitle: '清除查詢條件',footer: {selectText: '選擇',navigateText: '切換',},},},locales: {},},},

在這里插入圖片描述
然后配置locales,如何知道這個的呢。看ts定義。
在這里插入圖片描述
在config.mts中配置
在這里插入圖片描述
這里我把JapaneseSearch配置專門拉出來寫了。
在這里插入圖片描述

在這里插入圖片描述


export const JapaneseSearch: Record<string,Partial<Omit<DefaultTheme.LocalSearchOptions, 'locales'>>
> = {jp: {translations: {button: {buttonText: 'ドキュメントの検索',buttonAriaLabel: 'ドキュメントの検索',},modal: {noResultsText: '関連する結果を見つけることができませんでした',resetButtonTitle: 'クエリー條件の消去',footer: {selectText: 'せんたく',navigateText: '切り替え',closeText: '閉じる',},},},},
};

效果如下
在這里插入圖片描述

其他

能在locals下配置的有這些。
在這里插入圖片描述
在這里插入圖片描述
比如配置title
在這里插入圖片描述

效果
在這里插入圖片描述
除了這些以外,也要看某個配置里面是否有國際化配置選項。

插件

vitepress插件

使用一個插件。
vitepress-plugin-llms

文檔
安裝

npm install vitepress-plugin-llms --save-dev

在config.mts中引入
在這里插入圖片描述
.vitepress/theme/index.ts中引入,沒有theme/index.ts則創建
在這里插入圖片描述

import DefaultTheme from 'vitepress/theme'
import type { Theme } from 'vitepress'
import CopyOrDownloadAsMarkdownButtons from 'vitepress-plugin-llms/vitepress-components/CopyOrDownloadAsMarkdownButtons.vue'export default {extends: DefaultTheme,enhanceApp({ app }) {app.component('CopyOrDownloadAsMarkdownButtons', CopyOrDownloadAsMarkdownButtons)}
} satisfies Theme

然后引入markdown-it插件
在這里插入圖片描述

看看效果

在這里插入圖片描述
在這里插入圖片描述

復制出來的md

---
url: /desc.md
---
# 介紹我是一個人類

這里本地運行點擊這兩個可能會報錯,我是丟掉服務器點擊的,部署沒問題。

在哪里搜插件呢npmsjs

https://www.npmjs.com/search?q=vitepress-plugin在這里插入圖片描述

比如這個插件能拓展不少東西。

vitepress-plugin-mermaid

在這里插入圖片描述
在這里插入圖片描述

markdown-it插件

除了能使用vitepress插件(里面可能包含有markdown-it插件)外,
還可以使用markdown-it插件,因為vitepress內置的markdown渲染用的是這個。
在這里插入圖片描述
搜markdown-it插件也可以去npmjs搜
https://www.npmjs.com/search?q=markdown-it-plugin

有些已經內置了,找自己需要的就行。
或者你也可以自己寫,之前需要視頻顯示的時候也寫了個簡單的,不過針對特定格式寫法。
https://dmhsq.blog.csdn.net/article/details/148876825?spm=1011.2415.3001.5331

項目開發

原始需求和方案

原始需求是期望一個第三方富文本編輯器來編寫應用使用文檔,自動轉化為靜態站點。然后根據鏈接中的id來動態展示側邊欄。

通過一次開發需求總結。需求在之前的飛書文檔轉md基礎上,增加了CICD,這個CICD不是運維去發布的,是交給了使用人員。在此基礎上增加了權限,包括側邊欄的動態化,地址欄強行跳轉則轉到404。具體流程如下。
在這里插入圖片描述

自動化流程

使用人員點擊頁面上的刷新,通過后端調用jenkins的遠程觸發link進行構建,構建完成后推送data.json。

之前的記錄一次飛書文檔轉md嵌入vitepress做靜態站點

其實也是有不少問題的,不過過了一個周期又迭代了一次。

因為不需要home所以home頁純顯示loading了,這個頁面簡潔,給人一種加載中的錯覺。

在這里插入圖片描述
之前的文章寫的loading構建后也是有點問題的,所以采用了這種方式,進來后在home頁面,實際上就在loading。
當數據加載完成后,跳轉其他頁面就行。

路由攔截的話,可以用watch監聽route。
在這里插入圖片描述
在這個里面寫一些邏輯,當然還可以在setup中,來看下theme.ts的定義。
在這里插入圖片描述

我是在enhanceApp里面寫的獲取數據,在setup里面寫路由處理邏輯,使用pinia來通知數據的變化,

在這里插入圖片描述
在這里插入圖片描述

權限限制

從上面的獲取數據流程拿到路由數據。

限制跳轉就是監聽路由判斷是否有權限,沒有權限跳轉404。
正常情況下使用不用考慮這個,一般租戶id固定,頁面固定,在頁面內操作無這個問題,主要是處理地址欄直接訪問無權限路由。

除此之外也要限制搜索,比如無權限的頁面,不能讓他搜索到。
因為vitepress配置的local是用的minisearch。所以配置下minisearch。

在enhanceApp中獲取完成數據后動態設置siteData

  siteData.value = {...siteData.value,themeConfig: {...siteData.value.themeConfig,search: {...siteData.value.themeConfig.search,options: {...siteData.value.themeConfig.search.options,miniSearch: {...siteData.value.themeConfig.search.options.miniSearch,searchOptions: {// 過濾篩選結果 去掉無頁面權限的filter: (doc) => {try {const path = doc.id.split('#')[0];if (listData.find((item) => item.link == path)) {return true;}return false;} catch (error) {return true;}},},},},},// 覆蓋側邊欄sidebar: [{text: '文檔',items: sideBar,},],},};

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/91332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/91332.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/91332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#_創建自己的MyList列表

定義一個數據自己的列表MyList 使用上述描述列表的方式(數組) 列表內也要定義屬于自己的方法 例如 Sort排序 Add添加 等等....思路┌─────────────────────────────────────────────────────────────────…

記錄Linux下ping外網失敗的問題

最近在RK3568上進行開發測試&#xff0c;需要測試一下網絡環境&#xff0c;能否通過瀏覽器訪問外部網絡。測試情況如下&#xff1a; 1、ping內網、網關ip能ping通 2、ping外網ping不通 情況分析&#xff1a; 1、ping外網失敗&#xff08;ping 8.8.8.8也ping不通&#xff0c;說…

Redis 鍵值對操作詳解:Python 實現指南

一、環境準備 1. 安裝依賴庫 pip install redis2. 連接 Redis 數據庫 import redis# 創建 Redis 客戶端連接 r redis.Redis(hostlocalhost, # Redis 服務器地址port6379, # Redis 端口db0, # 數據庫編號&#xff08;0~15&#xff09;passwordNone, …

制造業企業大文件傳輸的痛點有哪些?

在全球化與數字化的浪潮下&#xff0c;制造業企業的大文件傳輸需求日益凸顯&#xff0c;然而諸多痛點也隨之而來&#xff0c;嚴重制約著企業的高效運營與發展。復雜網絡環境導致傳輸穩定性差制造業企業常涉及跨地域、跨國的業務合作與數據交流&#xff0c;網絡環境復雜多變。在…

低速信號設計之 MDIO 篇

一、引言? 在服務器的網絡子系統中,MDIO(Management Data Input/Output)總線雖然傳輸速率相對較低,卻扮演著極為關鍵的角色。它主要負責在 MAC(Media Access Control)層器件與 PHY(Physical Layer)層器件之間搭建起通信的橋梁,實現對 PHY 層器件的有效管理與狀態監控…

AR技術賦能航空維修:精度與效率的飛躍

在航空工業領域&#xff0c;飛機維修與裝配的精度要求越來越高。傳統的維修方法依賴人工操作和經驗判斷&#xff0c;容易產生誤差。隨著增強現實&#xff08;AR www.teamhelper.cn &#xff09;技術的引入&#xff0c;航空維修迎來了革命性的變化。本文將探討AR技術在航空維修中…

設計模式實戰:自定義SpringIOC(理論分析)

自定義SpringIOC&#xff08;理論分析&#xff09; 上一篇&#xff1a;設計模式開源實戰&#xff1a;觀察者模式不知道怎么用&#xff1f;手撕Spring源碼中跟著大佬學編程 上一篇我們研究了大佬在Spring源碼中使用的觀察者模式&#xff0c;今天我們再來聊聊Spring的核心功能—…

人工智能如何改變項目管理:應用、影響與趨勢

人工智能如何改變項目管理&#xff1a;應用、影響與趨勢1. 人工智能如何提升項目規劃與進度安排2. 人工智能在資源分配與優化中的應用3. 人工智能用于風險管理4. 人工智能用于團隊協作與交流5. 人工智能用于項目監控與報告6. 集成人工智能的項目管理軟件6.1 Wrike6.2 ClickUp6.…

【MySql】事務的原理

? 【MySql】事務的原理數據庫的隔離級別原理讀未提交讀已提交可重復讀&#xff08;Repeatable Read&#xff09;串行化&#xff08;最高的隔離級別&#xff0c;強制事務串行執行&#xff0c;避免了所有并發問題&#xff09;MVCC&#xff08;Multi-Version Concurrency Control…

YOLO--目標檢測基礎

一、基本認知1.1目標檢測的定義目標檢測&#xff08;Object Detection&#xff09;&#xff1a;在圖像或視頻中檢測出目標圖像的位置&#xff0c;并進行分類和識別的相關任務。主要是解決圖像是什么&#xff0c;在哪里的兩個具體問題。1.2使用場景目標檢測的使用場景眾多&#…

GitLab 18.2 發布幾十項與 DevSecOps 有關的功能,可升級體驗【四】

沿襲我們的月度發布傳統&#xff0c;極狐GitLab 發布了 18.2 版本&#xff0c;該版本帶來了議題和任務的自定義工作流狀態、新的合并請求主頁、新的群組概覽合規儀表盤、下載安全報告的 PDF 導出文件、中心化的安全策略管理&#xff08;Beta&#xff09;等幾十個重點功能的改進…

Python----大模型(大模型微調--BitFit、Prompt Tuning、P-tuning、Prefix-tuning、LORA)

一、大模型微調 1.1、解釋 微調(Fine-tuning)是在預訓練大模型基礎上&#xff0c;針對特定領域數據進行二次訓練的技術過程。這一過程使大型語言模型(如GPT、BERT等)能夠更好地適應具體應用場景&#xff0c;顯著提升在專業領域的表現。 1.2、微調的基本流程 模型選擇&#xf…

本地安裝 SQLite 的詳細步驟

方法 1:使用預編譯二進制文件 下載 SQLite: 訪問 SQLite 官方下載頁面。 下載 Precompiled Binaries for Windows 中的 sqlite-tools-win32-x86-*.zip。 解壓文件: 將下載的 ZIP 文件解壓到一個目錄(例如 C:\sqlite)。 配置環境變量: 右鍵「此電腦」→「屬性」→ 左側「高…

專題:2025醫藥生物行業趨勢與投融資研究報告|附90+份報告PDF、原數據表匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p43444 圈內人都知道&#xff0c;2024年的BioChina展會現場&#xff0c;某跨國藥企高管盯著融資展板喃喃自語&#xff1a;“去年A輪平均3.2億&#xff0c;今年怎么降到2.1億了&#xff1f;” 這個細節&#xff0c;恰是行業寒冬的縮影…

Chroma安裝教程

Chroma 這里講述的是windows環境 下載Chroma安裝包 下載地址&#xff1a;https://github.com/chroma-core/chroma/releases 運行 chroma-windows.exe run --port 8000通過心跳檢測訪問是否正常 http://localhost:8000/api/v2/heartbeat快速使用 python安裝chromadb pyth…

kali Linux 2025.2安裝教程(解決安裝失敗-圖文教程超詳細)

一&#xff0c;下載鏡像&#xff1a; 進入官網&#xff1a;Get Kali | Kali Linux &#xff0c;往下滑 等待兩年半&#xff0c;鏡像下載好。 二&#xff0c;虛擬機安裝&#xff1a; 轉&#xff1a;VMware Workstation Pro 17 安裝圖文教程 知乎平臺&#xff1a;VMware Work…

uniapp項目使用ucharts實現折線圖詳細講解(案例)

1.在Hbuildx里面的工具>插件安裝&#xff0c;進入DCloud搜索uchart 2.點擊對應的項目導入該插件 可以看到在該目錄下有該插件 3.進入官網演示 - uCharts跨平臺圖表庫&#xff0c;找一個示例代碼測試一下&#xff0c;是否可以成功應用 因為這里使用的是vue2&#xff0c;如果你…

數據分析師進階——95頁零售相關數據分析【附全文閱讀】

這份資料適合零售行業從業者&#xff0c;尤其是服裝銷售領域的人員&#xff0c;能幫大家用數據分析提升銷售業績。資料先提出 “店鋪 20 問”&#xff0c;引導思考店鋪運營問題&#xff0c;接著點明數據分析對提升銷售、找出銷售不佳原因的重要性 。詳細介紹銷售業績相關公式及…

計算機組成原理(6) - 加法器

加法器是數字電路中用于執行加法運算的基本邏輯單元&#xff0c;廣泛應用于計算機、計算器、數字信號處理器等電子設備中。它能將兩個二進制數相加&#xff0c;并輸出結果及可能產生的進位。一、加法器的基本功能加法器的基本功能是在數字電路中對輸入的二進制數執行加法運算&a…

Qt 與 WebService 交互開發

在現代軟件開發中&#xff0c;WebService 已成為實現跨平臺、跨語言通信的重要標準。Qt 作為一個強大的跨平臺框架&#xff0c;提供了完善的工具和類庫來實現與 WebService 的交互。本文將深入探討 Qt 與 WebService 交互開發的核心技術和實踐經驗&#xff0c;包括 SOAP 協議實…