首页
/ 告别编辑器选择困难:vue-vben-admin富文本与Markdown组件全攻略

告别编辑器选择困难:vue-vben-admin富文本与Markdown组件全攻略

2026-02-05 05:11:46作者:宣聪麟

在后台系统开发中,内容编辑功能是核心需求之一。vue-vben-admin作为基于Vue3的企业级中后台解决方案,提供了两种主流编辑器组件:Tinymce富文本编辑器和Markdown编辑器。本文将从实际应用场景出发,详细介绍这两种组件的集成方式、核心功能及个性化配置方法,帮助开发者快速实现专业级内容编辑功能。

组件概览与应用场景

vue-vben-admin将编辑器组件统一封装在src/components/目录下,其中:

  • 富文本编辑器:基于Tinymce实现,适合需要复杂排版(如新闻发布、邮件编辑)的场景,提供类似Word的直观编辑体验
  • Markdown编辑器:适合技术文档、博客撰写等场景,支持代码高亮、数学公式等开发者友好功能

两种编辑器均支持双向数据绑定、主题切换和图片上传功能,满足不同业务场景需求。

Tinymce富文本编辑器集成

基础使用方式

Tinymce编辑器的核心实现位于src/components/Tinymce/src/Editor.vue,基础使用示例:

<template>
  <Tinymce v-model="content" :height="500" />
</template>
<script setup>
import { ref } from 'vue';
import { Tinymce } from '@/components/Tinymce';

const content = ref('<p>初始内容</p>');
</script>

核心配置项

组件提供了丰富的可配置参数,关键属性包括:

参数名 类型 默认值 说明
height Number/String 400 编辑器高度
toolbar Array 详见源码 工具栏按钮配置
plugins Array 详见源码 启用的插件列表
showImageUpload Boolean true 是否显示图片上传按钮

完整配置可参考src/components/Tinymce/src/Editor.vue中的defineProps定义。

特色功能实现

  1. 主题切换:组件自动适配系统深色/浅色模式,实现逻辑:
// 主题适配核心代码
const skinName = computed(() => {
  return appStore.getDarkMode === 'light' ? 'oxide' : 'oxide-dark';
});
  1. 图片上传:通过src/components/Tinymce/src/ImgUpload.vue组件实现,支持本地图片上传和拖拽插入。

  2. 多语言支持:自动检测系统语言,支持中英文切换:

const langName = computed(() => {
  const lang = useLocale().getLocale.value;
  return ['zh_CN', 'en'].includes(lang) ? lang : 'zh_CN';
});

Markdown编辑器应用

组件结构与引用

Markdown编辑器在项目中以组合形式提供,包含编辑组件和预览组件,示例页面位于src/views/demo/editor/markdown/index.vue

基础用法:

<template>
  <MarkDown v-model:value="content" />
  <MarkdownViewer :value="content" />
</template>
<script setup>
import { ref } from 'vue';
import { MarkDown, MarkdownViewer } from '@/components/Markdown';

const content = ref('# 初始Markdown内容');
</script>

功能演示与API

Markdown组件提供以下核心功能:

  • 实时预览:编辑区与预览区同步更新
  • 代码高亮:支持多种编程语言语法高亮
  • 数学公式:支持LaTeX格式数学公式
  • 图表绘制:可嵌入Mermaid流程图

通过组件引用可调用内部方法:

// 主题切换示例
const markDownRef = ref<Nullable<MarkDownActionType>>(null);
function toggleTheme() {
  const markDown = unref(markDownRef);
  if (markDown) {
    const vditor = markDown.getVditor();
    vditor.setTheme('dark', 'dark', 'dracula');
  }
}

实战经验与性能优化

组件选择建议

编辑器类型 适用场景 优势 注意事项
富文本编辑器 复杂排版、新闻编辑 上手门槛低、排版能力强 生成HTML体积较大
Markdown编辑器 技术文档、博客 轻量高效、格式规范 需要一定学习成本

性能优化策略

  1. 按需加载:通过动态导入减少初始加载体积
  2. 图片懒加载:编辑器内图片采用懒加载策略
  3. 缓存机制:利用localStorage缓存编辑内容,防止意外丢失

总结与扩展

vue-vben-admin提供的编辑器组件已覆盖大部分后台系统内容编辑需求。如需扩展功能,可参考以下方式:

  1. 自定义工具栏:修改src/components/Tinymce/src/tinymce.ts中的默认工具栏配置
  2. 扩展Markdown语法:在src/components/Markdown/中扩展解析规则
  3. 集成第三方服务:通过自定义插件集成云存储、AI辅助编辑等功能

完整示例代码可参考项目中的演示页面:

通过合理选择和配置编辑器组件,可以为用户提供专业、高效的内容创作体验,同时保持系统的性能和可维护性。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
32
16
pytorchpytorch
Ascend Extension for PyTorch
Python
746
927
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.02 K
267
docsdocs
暂无描述
Dockerfile
771
5.03 K
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
867
1.97 K
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
70
22
atomcodeatomcode
Claude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get Started
Rust
1.94 K
202
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
694
1.36 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
465
456
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
C
458
5.25 K