vitepress组件库文档项目 markdown语法大全(修正版)

#上次总结的 有些语法是用在markdown文档中的 使用到vitepress项目中有些语法可能有出入 于是我再总结一版  vitepress项目中的markdown语法大全

在阅读本章节之前,请确保你已经对 Markdown 有所了解。如果你还不了解 Markdown ,请先学习一些Markdown 教程#

VitePress组件库文档项目中的Markdown语法十分丰富,它允许在Markdown文档中嵌入Vue语法,使得文档更加动态和交互。以下是一个关于VitePress中Markdown语法的大全,结合了Vue语法的使用

 一、基础Markdown语法

  • 标题:使用#号表示不同级别的标题,如# 一级标题## 二级标题等。

# 一级标题
## 二级标题
### 三级标题
  • 列表:使用-*表示无序列表,使用数字加.表示有序列表。

 

#无序列表
- 列表项一
- 列表项二
- 列表项三#有序列表
1. 列表项一
2. 列表项二
3. 列表项三
  • 链接:使用[文本](链接)表示超链接。

[这是一个链接](https://www.baidu.com) 
  • 图片:使用![描述](图片链接)表示图片。

![这是一张图片](https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg)
  • 代码块:使用三个反引号```包围代码,并可以指定语言进行高亮显示,如```javascript```。

```javascript
// 这是一个代码块
console.log('Hello, Vitepress!');```
  • 表格:使用| 表头1 | 表头2 | 表头3 |表示表格。

| 表头1 | 表头2 | 表头3 |
|-------|-------|-------|
| 单元格1 | 单元格2 | 单元格3 |
| 单元格4 | 单元格5 | 单元格6 |
  • 加粗和斜体

**这是加粗文本**
*这是斜体文本*
  • 分割线

---
  • 引用

> 这是一个引用。

二、Markdown在vitepress使用扩展

  • 内部链接

内部链接将会转化成路由链接用于SPA导航。同时,每一个文件夹下的 index.md 文件都会被自动编译为 index.html,对应的链接将被视为 /。

以下列目录结构为例:

.
├─ index.md
├─ foo
│  ├─ index.md
│  ├─ one.md
│  └─ two.md
└─ bar├─ index.md├─ three.md└─ four.md

 假设你在foo/one.md中:

[Home](/) <!-- 跳转到根目录的index.md -->
[foo](/foo/) <!-- 跳转到 foo 文件夹的 index.html-->
[foo heading](./#heading) <!-- 跳转到 foo/index.html 的特定标题位置 -->
[bar - three](../bar/three) <!-- 你可以忽略扩展名 -->
[bar - three](../bar/three.md) <!-- 具体文件可以使用 .md 结尾(推荐)-->
[bar - four](../bar/four.html) <!-- 也可以用 .html-->

页面后缀

页面和内部链接默认生成.html后缀。

  • 外部链接

出站链接自动添加target="_blank" rel="noopener noreferrer"。 

  • 表情符号

输入:

:tada: :100:

输出: 

🎉 💯

A list of all emojis is available.

  • 自定义容器

自定义容器可通过他们的类型、标题和内容来定义。

输入: 

::: tip
This is a tip
:::::: warning
This is a warning
:::::: danger
This is a dangerous warning
:::

输出: 

 

  • 自定义标题

输入: 

::: danger STOP
Danger zone, do not proceed
:::

输出: 

  • 在语法块中的语法高亮

VitePress 通过 Prism来实现Markdown中语法块的语法高亮,使用了有色文本。 Prism 支持大量的编程语言,你需要做的只是在代码块的开始反引号后附加一个有效的语言别名

输入: 

```js
export default {name: 'MyComponent',// ...
}
```

 输出:

输入:

```html
<ul><li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
</ul>
```

输出: 

  • 代码块中的行高亮

输入:

```js{4}
export default {data () {return {msg: 'Highlighted!'}}
}
```

输出: 

除了指定单号以外,你也可以指定多个单行、区间或两者皆有:

  • 行区间: 例如 {5-8}{3-10}{10-17}
  • 多个单行: 例如{4,7,9}
  • 行区间与多个单行:例如 {4,7-13,16,23-27,40}

输入:

```js{1,4,6-7}
export default { // Highlighteddata () {return {msg: `Highlighted!This line isn't highlighted,but this and the next 2 are.`,motd: 'VitePress is awesome',lorem: 'ipsum',}}
}
```

 输出:

  • 行号

你可以通过全局配置 config中增加启用行号

module.exports = {markdown: {lineNumbers: true}
}

 局部标记(推荐使用)

语法 :

  1.  直接在代码块类型的后面添加 :line-numbers 即表示开启行号

  2. 直接在代码块类型的后面添加 :no-line-numbers 即表示关闭行号展示

# 代码块-配置启用行号
```java:line-numberspublic class HelloWorld{public static void main(String[] args){System.out.println("hello world");}}
```
# 代码块-配置【不】启用行号
```java:no-line-numberspublic class HelloWorld{public static void main(String[] args){System.out.println("这是没有行号的代码块");}}
```

 补充 : 指定行号的起始值

说明 : 行号默认是从1开始的,如果想改变这个值,可以通过:line-numbers=n 的方式,直接指定行号从n开始 

  • 代码聚焦

代码聚焦的效果是 :凸显指定的内容,并模糊其他的部分,从而使重点突出。

基本语法 :// [!code focus]

用法 : 在需要聚焦的行后添加上述标注即可。
补充 : // [!code focus:xxx] : xxx 是一个数字,代表要聚焦的行数

# 代码块-聚焦-单行
```javapublic class HelloWorld{public static void main(String[] args){System.out.println("hello world"); // [!code focus]}}
```# 代码块-聚焦-连续多行
```javapublic class HelloWorld{public static void main(String[] args){ // [!code focus:3]System.out.println("hello world");}}
```
  • 删除/新增标记

这个功能就类似于 git 中的代码的删除与新增的展示效果。

基本语法 :
删除标注 :// [!code --]
新增标注 :// [!code ++]

# 代码块-删除/新增标记
```javapublic class HelloWorld{public static void main(String[] args){System.out.println("hello world"); // [!code --]System.out.println("hello new world"); // [!code ++]}}
```
  • 代码错误/警告标记

可以提示读者哪些代码有错误。这个功能的效果也是通过行的颜色来表示的。

基本语法 :
错误标注 :// [!code warning]
警告标注 :// [!code error]

# 代码块-错误/警告标记
```javapublic class HelloWorld{public static void main(String[] args){System.out.println("hello world"); // [!code warning]System.out.println("hello new world"); // [!code error]}}
```
  • 高级配置 

VitePress 使用 markdown-it 作为Markdown的渲染器。上述许多扩展是通过自定义插件实现。你可以通过 .vitepress/config.js中的markdown进一步定制markdown-it

module.exports = {markdown: {// options for markdown-it-anchoranchor: { permalink: false },// options for markdown-it-toctoc: { includeLevel: [1, 2] },config: (md) => {// use more markdown-it plugins!md.use(require('markdown-it-xxx'))}}
}

 三、在Markdown中使用vue

  • 浏览器 API 访问限制

因为 VitePress 应用在生成静态构建时是通过 Node.js 服务端渲染的,因此所有 Vue 的使用必须符合编写通用代码的要求。简而言之,要确保只在beforeMount 或 mounted时访问浏览器/DOM 的接口。

 如果你在使用或展示非 SSR 友好(比如包含自定义指令)的组件,你就可以使用ClientOnly将其包裹。

<ClientOnly><NonSSRFriendlyComponent/>
</ClientOnly>

 注意,这并不能解决一些组件或库在导入时就试图访问浏览器 API 的问题。 如果需要使用这样的组件或库,你需要在合适的生命周期钩子中动态导入:

<script>
export default {mounted() {import('./lib-that-access-window-on-import').then((module) => {// use code})}
}
</script>

 如果你的模块export default一个 Vue 组件,那么你可以动态注册。

<template><component v-if="dynamicComponent" :is="dynamicComponent"></component>
</template><script>
export default {data() {return {dynamicComponent: null}},mounted() {import('./lib-that-access-window-on-import').then((module) => {this.dynamicComponent = module.default})}
}
</script>
  • 插值表达式

你可以在Markdown文件中直接使用Vue的插值表达式来显示数据

<script setup>
import { ref } from 'vue'
const message = ref('Hello, VitePress with Vue 3!')
</script># 标题这里是插值表达式:{{ message }}
  • 指令

Vue的指令也可以在Markdown文件中使用,比如v-ifv-for

<script setup>
import { ref } from 'vue'
const isVisible = ref(true)
const items = ref(['Item 1', 'Item 2', 'Item 3'])
</script># 标题<div v-if="isVisible">这个div是可见的</div><ul><li v-for="item in items" :key="item">{{ item }}</li>
</ul>
  • 组件

你可以在Markdown文件中导入并使用Vue组件

<script setup>
import MyComponent from './MyComponent.vue'
</script># 标题<MyComponent />

 在这里,MyComponent.vue是一个你定义好的Vue 3组件,它可以直接在Markdown文件中被引用和渲染。 

  • 事件处理

你也可以在Markdown文件中为Vue组件添加事件处理

<script setup>
import { ref } from 'vue'
const count = ref(0)
function increment() {count.value++
}
</script># 标题<button @click="increment">点击次数:{{ count }}</button>
  • 使用<script setup>

Vue 3引入了<script setup>语法糖,它允许你更简洁地编写组件逻辑。在VitePress的Markdown文件中,你也可以使用这种语法

<script setup>
// 在这里编写你的Vue 3逻辑
</script># 你的标题和内容// 在这里使用你的Vue 3组件和指令

 

注意事项 

确保你的VitePress配置支持Vue 3和Markdown的结合。通常,VitePress默认支持这个功能,但你可能需要检查并配置一些选项。
在Markdown文件中使用Vue语法时,确保你的Vue代码被正确地包裹在<script>标签内,并且遵循Vue 3的语法规则。
如果你使用的是自定义的Vue组件,请确保它们已经被正确地导入,并且可以在Markdown文件中被识别和使用。

  • 访问站点及页面数据

编译后的组件可以访问 站点元数据和计算属性。

输入:

{{ $page }}

 输出:

  • Escaping

默认情况下,代码块(三个反引号包裹)将会被自动包裹在 v-pre 中。如果你想要在内联 (inline) 的代码块或者普通文本中显示原始的大括号或一些 Vue 特定的语法,你需要使用自定义容器 v-pre来包裹:

 输入:

::: v-pre
`{{ This will be displayed as-is }}`
:::

输出:

 {{ This will be displayed as-is }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/63189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blender导入下载好的fbx模型像的骨骼像针戳/像刺猬

为什么我下载下来的骨骼模型和我自己绑定的模型骨骼朝向完全不一样 左边是下载的模型 右边是我自己绑定的模型 左边的模型刚刚感觉都是像针一样往外戳的&#xff0c;像刺猬一样那种。 解决方法勾选自动骨骼坐标系

ASP.NET CORE API 解决跨域问题

环境 vs2022 .net 8 创建ASP.net Core API项目 配置跨域 编写ApiController 启动项目 得到服务器运行的 地址 在Hbuiler中创建web项目&#xff0c;编写代码 【运行】-【运行到浏览器】-选择一个浏览器,查看结果 正常显示 问题 如果允许所有源访问&#xff0c;有安全风险方…

【AI系统】MobileFormer

MobileFormer 在本文中&#xff0c;将介绍一种新的网络-MobileFormer&#xff0c;它实现了 Transformer 全局特征与 CNN 局部特征的融合&#xff0c;在较低的成本内&#xff0c;创造一个高效的网络。通过本节&#xff0c;让大家去了解如何将 CNN 与 Transformer 更好的结合起来…

决策树:ID3、C4.5和CART特征选择方式

1 前言 该文章主要目的是记录ID3、C4.5和CART特征选择方式&#xff0c;这里只对决策树进行简单介绍。 决策树&#xff08;Decision Tree&#xff09;算法是一种有监督学习算法&#xff0c;它利用分类的思想&#xff0c;根据数据的特征构建数学模型&#xff0c;从而达到数据的筛…

【3D AIGC】Img-to-3D、Text-to-3D、稀疏重建(2024年文章汇总)

文章目录 1. Wonderworld&#xff1a;拓展图片边界&#xff0c;生成3D场景2. 3DTopia-XL&#xff1a;扩散模型辅助生成3. 3DGS-Enhancer: 通过视图一致2D Diffusion&#xff0c;提升无界3D Gaussian Splatting (NlPs2024 Spotlight)4. L3DG&#xff1a;Latent 3D Gaussian Diff…

三款电容麦的对比

纸面参数 第一款麦克风 灵敏度: -36 dB 2 dB&#xff08;0 dB1V/Pa at 1 kHz&#xff09; 灵敏度较低&#xff0c;需要更高的增益来拾取同样的音量。频率响应: 40 Hz - 18 kHz 响应范围较窄&#xff0c;尤其在高频区域。等效噪音级: ≤18 dB&#xff08;A计权&#xff09; 噪…

运行 GreatSQL 时为什么要求关闭透明大页

在大部分运维规范中&#xff0c;一般都会要求在运行 GreatSQL/MySQL 的环境中要关闭透明大页&#xff0c;那么到底什么是透明大页&#xff0c;为什么要关闭&#xff0c;打开有什么风险吗&#xff1f; 在此之前&#xff0c;我也是有点懵的&#xff0c;本文试着回答这个疑问&…

JUnit介绍:单元测试

1、什么是单元测试 单元测试是针对最小的功能单元编写测试代码&#xff08;Java 程序最小的功能单元是方法&#xff09;单元测试就是针对单个Java方法的测试。 2、为什么要使用单元测试 确保单个方法运行正常&#xff1b; 如果修改了代码&#xff0c;只需要确保其对应的单元…

Elasticsearch:使用硬件加速的 SIMD 指令实现超快 BBQ

作者&#xff1a;来自 Elastic Chris Hegarty 我们如何使用硬件加速 SIMD&#xff08;Single Instruction Multiple Data - 单指令多数据&#xff09;指令优化 BBQ 中的向量比较。 随着我们继续致力于让 Elasticsearch 和 Apache Lucene 成为存储和搜索向量数据的最佳场所&…

青龙面板添加任务执行自己的脚本文件(非订阅) 保姆级图文

目录 效果预览脚本存放的位置创建任务cron规则字段含义&#xff1a;常见的特殊字符&#xff1a; 可能你的脚本需要安装依赖总结 欢迎关注 『青龙面板』 专栏&#xff0c;持续更新中 欢迎关注 『青龙面板』 专栏&#xff0c;持续更新中 效果预览 你的python脚本 print(123)运行…

flink的安装配置(详细版本)

Standalone集群模式安装部署 conda deactivate 退出 base环境 Flink支持多种安装模式。 local&#xff08;本地&#xff09;——本地模式 standalone——独立模式&#xff0c;Flink自带集群&#xff0c;开发测试环境使用 standaloneHA—独立集群高可用模式&#xff0c;Fli…

Linux Cgroup学习笔记

文章目录 Cgroup(Control Group)引言简介Cgroup v1通用接口文件blkio子系统cpu子系统cpuacct子系统cpuset子系统devices子系统freezer子系统hugetlb子系统memory子系统net_cls子系统net_prio子系统perf_event子系统pids子系统misc子系统 Cgroup V2基础操作组织进程和线程popula…

JVM, JRE 和 JDK

JRE: Java Runtime Environment, Java 运行环境. JDK: Java Development Kit, Java 开发工具包. JRE JVM 核心类库 运行工具 JDK JVM 核心类库 开发工具 JVM: Java Virtual Machine, Java 虚拟机. 核心类库: Java 已经写好的东西, 直接拿来用即可. 开发工具: 包括 …

用于LiDAR测量的1.58um单芯片MOPA(一)

--翻译自M. Faugeron、M. Krakowski1等人2014年的文章 1.简介 如今&#xff0c;人们对高功率半导体器件的兴趣日益浓厚&#xff0c;这些器件主要用于遥测、激光雷达系统或自由空间通信等应用。与固态激光器相比&#xff0c;半导体器件更紧凑且功耗更低&#xff0c;这在低功率供…

前端框架的选择与反思:在简约与复杂之间寻找平衡

在当今互联网时代&#xff0c;前端开发已经成为web应用构建中不可或缺的一环。从最初的静态HTML页面&#xff0c;到如今复杂的单页应用&#xff08;SPA&#xff09;&#xff0c;前端技术的发展让我们见证了Web应用的蓬勃发展。然而&#xff0c;伴随着技术的进步&#xff0c;一个…

吴恩达:《State of AI report》展现2024的主要趋势和突破(二)

万字长文&#xff0c;2024AI行业的科研角力 ©作者|Zhongmei 来源|神州问学 前言 吴恩达的网站在十月中旬发表了一篇名为《A Year of Contending Forces》的文章&#xff0c;该文章是围绕着一个名为《State of AI Report - 2024》的年度报告的总结和点评。该报告由Nathan…

【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)

参考 15.深入k8s:Event事件处理及其源码分析 - luozhiyun - 博客园event 模块总览 EventRecorder:是事件生成者,k8s组件通过调用它的方法来生成事件;EventBroadcaster:事件广播器,负责消费EventRecorder产生的事件,然后分发给broadcasterWatcher;broadcasterWatcher:用…

40分钟学 Go 语言高并发:分布式锁实现

分布式锁实现 一、概述 分布式锁是分布式系统中的一个重要组件&#xff0c;用于协调分布式环境下的资源访问和并发控制。我们将从锁设计、死锁预防、性能优化和容错处理四个维度深入学习。 学习目标 维度重点内容掌握程度锁设计基于Redis/etcd的锁实现原理必须掌握死锁预防…

今日分享开源酷炫大数据可视化大屏html模板

前言 虽然目前已有很多开源在线制作可视化大屏项目 但有时候为了项目赶工期上线&#xff0c;直接利用现成的可视化大屏html模板&#xff0c;配合开源低代码平台Microi吾码的接口引擎&#xff0c;半小时以内就能做一个成品 先上图 代码也非常简单&#xff0c;利用Microi吾码接口…

白鲸开源即将在Doris Summit Asia 2024展示新议题!

一年一度的 Apache Doris 峰会再次启航&#xff0c;Doris Summit Asia 2024 现已开启报名&#xff0c;将于 2024 年 12 月 14 日在深圳正式举办。此次峰会&#xff0c;将对实时极速、存算分离、湖仓一体、半结构化数据分析、向量索引、异步物化视图等诸多特性进行全方位解读&am…