使用组件
局部引入
提示💡
每个 Markdown 文件首先会被编译为 HTML,然后转换为 Vue 单文件组件(SFC)。换句话说,你可以像编写 Vue SFC 一样编写 Markdown 文件。
<script>
和<style>
标签会直接被视为 Vue SFC 中的标签。换句话说,它们会从<template>
标签提升到 SFC 的顶层。除了
<script>
和<style>
标签之外的所有内容都会被编译为 HTML,然后被视为 Vue SFC 中的<template>
标签。转换后的 Vue SFC 会被缓存到
.vuepress/.temp/pages
目录中,并会在布局中通过内置的<Content />
组件渲染。
注意❗
你可以在 Markdown 中直接使用 Vue 语法,详情请见 VuePress → Markdown。由于 Vue 单文件组件只能包含一个
<script>
标签,所以你应该避免在 VuePress Markdown 中使用多个<script>
标签。
注意❗
由于 Markdown 文件会被转换为 Vue 单文件组件并缓存到
.vuepress/.temp/pages
目录中,所以相对导入在 Markdown 文件中是无效的。你应该使用别名。
你可以使用 @source
别名来引用当前项目的源目录。
.
├── src → project folder
│ ├── example
│ │ ├── ...
│ │ └── MyComponent.vue
│ ├── ...
│ └── README.md
└── ...
你也可以使用 alias
选项来创建别名:
.
├── src → project folder
│ ├── .vuepress
│ │ ├── components
│ │ │ └── MyComponent.vue
│ │ ├── ...
│ │ └── config.ts
│ ├── ...
│ └── README.md
└── ...
重点
尽可能使用局部注册
全局组件需要在 VuePress 初始化时加载(即访问第一个页面时)。因此,如果一个全局组件很大,它会影响站点的初始加载时间。
在 Markdown 中局部导入组件意味着组件只会在访问使用它的页面时加载。
全局组件
通过客户端配置文件注册
你可以通过创建 .vuepress/client.js
或 .vuepress/client.ts
手动注册组件。
全局组件可以直接在任何组件、布局或页面中使用。
- Markdown:
- 组件:
- 布局:
register-components: 自动组册组件
注意❗
只能单层匹配
globby: 匹配规则
*
matches any number of characters, but not/
?
matches a single character, but not/
**
matches any number of characters, including/
, as long as it’s the only thing in a path part{}
allows for a comma-separated list of “or” expressions!
at the beginning of a pattern will negate the match