vitepress天然支持在markdown中直接渲染vue组件,因其将每个.md文件编译为vue单文件组件,可直接使用引入、插值、指令及;而markdown-it等需手动解析html占位符并动态挂载,markstream-vue则通过作用域前缀隔离组件注册,插槽方式则交由父组件控制渲染逻辑。

在 Markdown 中直接渲染 Vue 自定义组件,核心不是“注册组件”,而是让 Markdown 解析器识别特定语法,并在对应位置挂载 Vue 实例。不同方案实现路径不同,但都绕不开解析、挂载、作用域三个关键环节。
用 VitePress:天然支持,开箱即用
VitePress 的每个 .md 文件本身就是 Vue 单文件组件(SFC),因此可直接使用 Vue 语法:
- 在 Markdown 中写
<mybutton label="点击"></mybutton>,只要该组件已全局注册或在当前页面局部引入,就能渲染 - 支持
<script setup></script>和<style scoped></style>,可直接在 md 文件中写逻辑和样式 - 若需局部组件,推荐在
.md文件顶部用<script setup></script>引入并声明:import MyButton from './components/MyButton.vue'
用 markdown-it + Vue:手动接管渲染流程
markdown-it 默认只输出 HTML 字符串,要渲染 Vue 组件,需拦截自定义标签并动态挂载:

