避坑指南

2021/10/21

# hash跳转问题

# 乱跳bug

  • 空行、img、横线,连着的时候就会乱跳

# 组件嵌套

  • 除非本身是嵌套组件,否则尽量不要使用组件嵌套,容易出现编译错误
  • markdown-it-container是通过成对的 ::: 作为token来判断编译语法的,嵌套时容易出现token配对错误

# markdown插槽

  • vuepress2.0版本已经在开发中,已经弃用了markdown插槽功能,为了以后升级方便,开发插件时尽量不要使用markdown插槽

# js表达式

  • vuepress可以将js表达式计算输出,可以通过moustache语法来写
{{1 + 1}}
1

# 调试变量

  • 开发插件时可以将几个内置变量打印到页面上,方便找出问题
{{$page}}
{{$site}}
{{$frontmatter}}
1
2
3

更多全局计算属性可以查看官网 (opens new window)

# 行内样式展现错误

例:

::: el-button type=warning
警告按钮
:::
1
2
3

# 产生原因:整个框架编译流程为:

  1. 插件语法编译:产出组件标签、内置内容放入slot
  2. vue 解析整个模板,产出html
  3. markdown语法编译:内置语法转换成html(一行文字会被转换成P标签
  4. 所以行内样式语法不能较好的表示

# 解决方案:

  • 硬编码形式: 由于框架内置html解析器,可以直接写HTML语法,跳过了markdown解析过程
<el-button type="warning">警告提示</el-button>
1

# 开发插件传参错误

例:

::: el-slider value=30
:::
1
2
  • 传参value并没有生效,因为md默认传参为String类型
  • 解决方案:在插件开发中将传入值parseInt再使用
// vue component
  computed: {
      key() {
          return parseInt(this.id);
      }
  }
1
2
3
4
5
6

# 开发插件热更新不生效

  • 修改了.vuepress文件夹下的内容最好重启服务
  • 如果重启服务还没有更新,那就是走的缓存文件,再随便更新一个markdown文件保存就能热更新

# 新建文件目录问题

# 新建子目录

  • 无论嵌套多少层级,子目录md文件都是每一项父目录的相对路径
  • 每个父目录都是和navbar项一一映射的,建子目录时不能修改,只能动子目录的路径

# 新建nav目录

  • 每个nav目录至少有一个子目录包含一个README.md文件,同时sidebar配置为 '' ,如果没有会路径解析错误。

因为点击nav目录时跳转的时nav路径下的README.md文件解析成的index.html文件。

上次更新: 11/1/2024