# vue-markdown **Repository Path**: yzhno1/vue-markdown ## Basic Information - **Project Name**: vue-markdown - **Description**: 一个基于Vue的Markdown渲染组件,支持实时预览、主题切换和自定义扩展,适用于快速构建内容丰富的Web应用。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-06-11 - **Last Updated**: 2025-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vue-markdown-mini - 一个基于Vue的Markdown渲染组件,支持实时预览、主题切换和自定义扩展,适用于快速构建内容丰富的Web应用。 ## install - npm install vue-markdown-mini mermaid --save-dev ### 参数 | 参数名 | 类型 | 默认值 | 说明 | | -------------- | --------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | content | `string` | '' | MarkDown文本 | | theme | [`Theme`](#theme) | 'light' | MarkDown卡片主题 | | mdOptions | `object` | {} | 设置 markdown 对字符串的处理方式, 可参考[markdown-it](https://www.npmjs.com/package/markdown-it?activeTab=readme) | | mdPlugins | [MdPlugin[]](#mdplugin) | [] | 设置 markdown-it 插件 | | customXssRules | [CustomXssRule[]](#customxssrule) | [] | 自定义 xss 对某种 tag 的过滤方式,每条规则需要指定 tag, 并给出需要加入白名单的属性数组 | | enableThink | `boolean` | false | 是否开启\标签识别 | | thinkOptions | [`ThinkOptions`](#thinkoptions) | -- | \标签配置,自定义样式等 | | typing | `boolean` | false | 开启打字机效果 | | typingOptions | [`TypingOptions`](#typingoptions) | `{ step: 2, interval: 50, style: 'normal' }` | 打字机效果配置 | | renderMermaid | `boolean` | false | 开启mermaid渲染图表 | ### 代码块插槽 | 插槽名 | 返回值 | 说明 | | ----------- | -------------------------------------------------- | ---------------------------- | | codeActions | { codeBlockData: [CodeBlockData](#codeblockdata) } | 代码块头部右侧自定义操作区域 | | codeHeader | { codeBlockData: [CodeBlockData](#codeblockdata) } | 自定义代码块头部区域 | | codeContent | { codeBlockData: [CodeBlockData](#codeblockdata) } | 自定义代码块内容区域 | ### 事件 | 事件名 | 返回值 | 说明 | | -------------- | ------ | -------------------------------------- | | after-mdt-init | Object | markdown-it实例mdt,在初始化完成后返回 | | typingStart | -- | 打字效果开始回调 | | typing | -- | 打字中每一步回调 | | typingEnd | -- | 打字结束回调 | ### 类型定义 #### CustomXssRule ```ts interface CustomXssRule { key: string value: string[] | null } ``` #### Mdplugin ```ts interface Mdplugin { plugin: any opts?: Object } ``` #### Theme ```ts type Theme = 'light' | 'dark' ``` #### CodeBlockData ```ts interface CodeBlockData { code: string language: string } ``` #### ThinkOptions ```ts interface ThinkOptions { customClass: string } ``` #### TypingOptions ```ts interface TypingOptions { step: number | [number, number] // 可指定两个数字之间step interval: number style: 'normal' | 'cursor' | 'gradient' | 'color' } ``` ## 使用方法 - 引入组件及样式 - import VueMarkdownMini from 'vue-markdown-mini' - import 'vue-markdown-mini/scss/index.scss' - app.component('VueMarkdownMini',VueMarkdownMini) ### 基本用法 基本用法只需传入 content 即可 :::demo ```vue ``` ::: ### 打字机效果 支持配置打字机动效果,当前内置不同效果样式可配置,支持配置动效速度与打字间隔,也适用流式数据返回场景。 :::demo ```vue ``` ::: ### think标签支持 支持自定义的 think 标签,用于包裹特定内容并渲染为自定义样式的块级元素。适合用于强调思考过程或特殊内容展示 :::demo ```vue ``` ::: ### 主题切换 组件提供了浅色与深色两种主题,默认使用浅色主题,可以通过 theme 属性来切换主题 :::demo ```vue ``` ::: ### 数学公式 通过配置md-plugins katex插件,进行数学公式渲染(DEMO未实际渲染,实际使用时解开代码中注释即可按预期渲染)。 :::demo ```vue ``` ### PlantUML 渲染 通过配置md-plugins plantuml插件,进行plantuml图渲染。 :::demo ```vue ``` ::: ### emoji渲染 通过配置markdown-it-emoji插件,进行emoji表情渲染。 :::demo ```vue ``` ::: ### 自定义代码块操作区 我们提供了 `actions` 插槽,支持你自定义代码块操作区 :::demo ```vue ``` ::: ### 自定义代码块头部 我们提供了 `header` 插槽,支持你自定义代码块头部区域 :::demo ````vue ::: ### 自定义代码块内容区 我们提供了 `content` 插槽,支持你自定义代码块内容区 :::demo ```vue ````