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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 协议实…