Markdown 编辑器 & 渲染

MdEditor 提供 Markdown 编辑能力(工具栏、分屏预览、快捷键),MdRender 用于纯渲染展示 Markdown 文档内容。底层基于 marked 解析,完整支持 GFM 语法。

MdEditor Markdown 编辑器

基础用法
通过 v-model 双向绑定 Markdown 内容,默认分屏模式。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
当前内容长度:286
视图模式
view-mode-prop 切换编辑 / 分屏 / 预览三种视图。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
禁用与只读
disabled 禁止交互,readonly 仅可阅读不可编辑。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
隐藏工具栏
hide-toolbar 隐藏工具栏,适用于简洁场景。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
字数统计
maxlength + show-count 显示字数统计。
11/200

统计字数的示例文本……

自定义高度
height 设置编辑器高度,支持数字(px)或 CSS 字符串。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
图片上传
支持三种方式插入图片:工具栏按钮选择文件、编辑区粘贴图片、拖拽图片到编辑区。默认将图片转为 base64,可通过 upload-fn 自定义上传逻辑。

图片上传示例

点击工具栏图片按钮选择文件,或直接粘贴 / 拖拽图片到编辑区。

MdRender Markdown 渲染

基础渲染
传入 Markdown 文本,渲染为带样式的 HTML。

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
不同尺寸
size 控制字号大小。
size = "sm"

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
size = "md"

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
size = "lg"

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
编辑器 + 渲染联动
在编辑器中输入内容,实时用 MdRender 渲染展示。
编辑区

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务
渲染区

标题一

标题二

这是一段 粗体斜体删除线行内代码 的示例。

  • 无序列表项 1
  • 无序列表项 2
  • 无序列表项 3
  1. 有序列表项 1
  2. 有序列表项 2

引用文本

链接示例

列1 列2 列3
A B C
D E F
console.log('Hello, Markdown!')

  • 已完成任务
  • 未完成任务

API

MdEditor Props

参数类型默认值说明
modelValuestring''Markdown 内容,支持 v-model
placeholderstring'请输入 Markdown 内容...'占位文本
disabledbooleanfalse是否禁用
readonlybooleanfalse是否只读
hideToolbarbooleanfalse是否隐藏工具栏
viewModeProp'edit' | 'split' | 'preview''split'初始视图模式
heightstring | number400编辑器高度,数字为 px
maxlengthnumber-最大输入长度
showCountbooleanfalse是否显示字数统计
autofocusbooleanfalse是否自动聚焦
acceptstring'image/*'上传文件类型限制
uploadFn(file: File) => Promise<string>-自定义上传函数,接收 File 返回图片 URL;不传则转 base64

MdEditor Events

事件名回调参数说明
update:modelValue(val: string)内容变化时触发
change(val: string)内容变化时触发
focus(e: FocusEvent)获得焦点时触发
blur(e: FocusEvent)失去焦点时触发
upload-success(payload: { file: File; url: string })图片上传成功时触发
upload-error(payload: { file: File; error: Error })图片上传失败时触发

MdEditor Methods

方法名参数说明
focus()聚焦编辑器
blur()失焦编辑器
getViewMode() => ViewMode获取当前视图模式
setViewMode(mode: ViewMode)设置视图模式
triggerUpload()手动触发文件选择弹窗

MdRender Props

参数类型默认值说明
contentstring''要渲染的 Markdown 文本
size'sm' | 'md' | 'lg''md'渲染字号大小