继上篇文章基础上,记录一些再vuepress中如何更加优雅的编写markdown,其实好好看官方文档,会发现有很多实用的插件,以及更加优雅的markdown语法,能够大大减轻cv工程。
markdown常用语法
-
斜体 :
*斜体* -
加粗 :
**加粗** -
标题h1-h6: 用#空格
-
链接 :
[链接](http://a.com) -
图片:
![图片转存失败,建议将图片保存下来直接上传 Image(http://url/a.png)]() -
引用:
> 引用 -
水平分割线 :
---
行内代码:单斜引号``- 块级代码: 三个单斜引号回车
// 内容
vuepress中markdown扩展用法
VuePress 会使用 markdown-it在新窗口打开 来解析 Markdown 内容,因此可以借助于 markdown-it 插件来实现 语法扩展在新窗口打开 。
文章内链接跳转
你可以使用连接语法,路径可以使用相对路径指向项目中其他文件路径,也可以使用绝对路径或者URL显示完整的连接路径
<!-- 相对路径 -->
[首页](../README.md)
[配置参考](../reference/config.md)
[快速上手](./getting-started.md)
<!-- 绝对路径 -->
[指南](/zh/guide/README.md)
[配置参考 > markdown.links](/zh/reference/config.md#links)
<!-- URL -->
[GitHub](https://github.com)
目录自动生成
如果你想要把当前页面的目录添加到 Markdown 内容中,你可以使用 [[toc]] 语法。
她会自动将页面中的1-6级标题作为目录显示,可以通过配置指定要现实的标题等级
[[toc]]
如果需要自定义,可在 .vuepress/config.ts文件中添加markdown相关配置
export default defineUserConfig({
markdown:{
toc: {
level: [3], // 默认是[2,3] 默认显示2级和3级标题
containerClass: "toc-container", // 指定目录的容器样式,支持自定义样式修改
listTag: 'ul' ,// 目录得目标标签可选参数 'ul' | 'ol'
format?: (str: string) => str, // 格式化显示的目录
// ... 更多的配置可以参考类型文件的说明
}
}
})
导入代码
有时候我们在写文档的时候需要显示案例,同时希望案例对应的代码能够在线查看的方式展现应该怎么做呢?如下效果
- 首先在项目中创建案例的组件代码 ./vuepress/components/Demo.vue
- 组件注册(这步可以查看上一篇文章《vuepress2.0搭建踩过的坑》)
- 编写markdown如下
<Demo></Demo>
<details>
<summary class="markdown-code">code</summary>
<!-- ```vue
<template>
<div class="demo">
</div>
</template>
<script lang="ts" setup>
const props = defineProps({
header: String,
})
</script>
```--> // 此处注释要求掉,由于显示问题这里加上了注释
</details>
这样就需要重复写一次案例的代码了,有没有更简单的方法?
当然,vuepress中提供了导入代码的方式。是不是更简单了
<Demo/>
<details>
<summary class="markdown-code">code</summary>
@[code](@src/Demo.vue)
</details>
导入代码
基本用法
- 从文件中导入代码块:
<!-- 最简单的语法 -->
@[code](../foo.js)
- 导入这个文件的一部分:
<!-- 仅导入第 1 行至第 10 行 -->
@[code{1-10}](../foo.js)
- 显示指定代码语言,不指定会根据文件扩展名进行推断:
<!-- 指定代码语言 -->
@[code js](../foo.js)
- 高亮指定行代码
<!-- 行高亮 -->
@[code js{2,4-5}](../foo.js)
下面是一个复杂的例子:
- 导入
'../foo.js'文件的第 3 行至第 10 行 - 指定语言为
'js' - 对导入代码的第 3 行进行高亮,即
'../foo.js'文件的第 5 行 - 禁用行号
@[code{3-10} js{3}:no-line-numbers](../foo.js)
路径别名配置
import { getDirname, path } from '@vuepress/utils'
const __dirname = getDirname(import.meta.url)
export default {
markdown: {
importCode: {
handleImportPath: (str) =>
str.replace(/^@src/, path.resolve(__dirname, './components'))
}
}
}
<!-- 会被解析至 'components/foo.js' -->
@[code](@src/foo.js)
代码块分组
:::: code-group
::: code-group-item html
@[code{1-49}](@src/Form/Basic.vue)
:::
::: code-group-item typescript
@[code{50-97}](@src/Form/Basic.vue)
:::
::::
会被解析成: