当前位置: 首页 > news >正文

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.dtcms.com/a/304617.html

相关文章:

  • 编程算法在金融、医疗、教育、制造业的落地应用。
  • 云服务器上基于lora微调Qwen2.5-VL-7b-Instruct模型之Lora微调代码讲解
  • Netty中InternalThreadLocalMap的作用
  • Rust实现GPU驱动的2D渲染引擎
  • Vue3 学习教程,从入门到精通, Vue3 自定义指令语法知识点及案例(20)
  • c++ nlohmann/json读写json文件
  • JavaWeb学习打卡18(JDBC案例详解)
  • ansible 使用更高版本的python版本
  • Python中的决策树机器学习模型简要介绍和代码示例(基于sklearn)
  • 【牛客网C语言刷题合集】(五)——主要二进制、操作符部分
  • GO 开发环境安装及配置
  • Claude Code 使用教程(对接智谱模型)
  • 84、【OS】【Nuttx】【启动】栈溢出保护:asm 关键字(下)
  • SpringBoot集成Quzrtz实现定时任务
  • 【目标检测】小样本度量学习
  • 记录一个TI DSP编译器的Bug
  • CentOS安装ffmpeg并转码视频为mp4
  • 预过滤环境光贴图制作教程:第四阶段 - Lambert 无权重预过滤(Stage 3)
  • 预过滤环境光贴图制作教程:第一步 - HDR 转立方体贴图
  • Android Compose 自定义组件完全指南
  • 对College数据进行多模型预测(R语言)
  • 《React与Vue构建TODO应用的深层逻辑》
  • 【lucene】SegmentCoreReaders
  • linux_前台,后台进程
  • LeetCode热题100——155. 最小栈
  • (LeetCode 面试经典 150 题) 150. 逆波兰表达式求值 (栈)
  • 电脑主机显示的python版本是3.8.6,但是我在控制面板没有找到,想删除不知道怎么操作怎么办
  • 《 java 随想录》| LeetCode链表高频考题
  • 【LeetCode】大厂面试算法真题回忆(111)--身高排序
  • 鱼皮项目简易版 RPC 框架开发(五)