Vue 3 整合 WangEditor 富文本编辑器:从基础到高级实践

WangEditor Cover

本文将详细介绍如何在 Vue 3 项目中集成 WangEditor 富文本编辑器,实现图文混排、自定义扩展等高阶功能。


一、为什么选择 WangEditor?

作为国内流行的开源富文本编辑器,WangEditor 具有以下优势:

  • 轻量高效:压缩后仅 1.5MB,远小于其他同类产品
  • 开箱即用:提供 Vue/React 官方封装组件
  • 扩展性强:支持自定义菜单、异步图片上传等
  • 安全可靠:内置 XSS 过滤机制

二、快速集成到 Vue 项目
1. 安装依赖
npm install @wangeditor/editor @wangeditor/editor-for-vue
2. 基础组件封装
<template><div class="editor-wrapper"><!-- 工具栏 --><Toolbar :editor="editorRef" :defaultConfig="toolbarConfig"/><!-- 编辑器 --><Editorv-model="valueHtml":defaultConfig="editorConfig"@onCreated="handleCreated"/></div>
</template><script setup>
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'// 编辑器实例(必须使用 shallowRef)
const editorRef = shallowRef()// 内容数据绑定
const valueHtml = ref('<p>初始内容</p>')
</script>

三、核心功能实现
1. 图片上传集成
editorConfig.MENU_CONF['uploadImage'] = {allowedFileTypes: ['image/*'],customUpload: async (file, insertFn) => {try {const ossUrl = await uploadToOSS(file) // 对接云存储insertFn(ossUrl, '图片描述') // 插入编辑器} catch (error) {console.error('上传失败:', error)}}
}

注:推荐结合七牛云/阿里云 OSS 实现文件存储

2. 数据双向绑定
// 父组件传值
watch(() => props.modelValue, (newVal) => {if (valueHtml.value !== newVal) {valueHtml.value = newVal}
})// 子组件更新
watch(valueHtml, (newVal) => {emit('update:modelValue', newVal)
})
3. 工具栏定制
// 隐藏不常用功能
const toolbarConfig = {excludeKeys: ['fullScreen', 'codeBlock', 'code']
}

四、高级实践技巧
1. 动态获取工具栏配置
onMounted(() => {setTimeout(() => {const editor = editorRef.valueconst toolbar = DomEditor.getToolbar(editor)console.log(toolbar.getConfig().toolbarKeys)}, 1500)
})
2. 内存泄漏防护
onBeforeUnmount(() => {const editor = editorRef.valueeditor?.destroy() // 必须销毁实例
})
3. 内容变化监听
const handleCreated = (editor) => {editorRef.value = editor// 监听编辑器变化editor.on('change', () => {console.log('内容变化:', editor.getHtml())})
}

五、最佳实践建议
  1. 样式隔离:通过外层容器限制编辑器宽度

    .editor-wrapper {max-width: 1200px;margin: 0 auto;border: 1px solid #eee;
    }
    
  2. 性能优化

    • 使用 shallowRef 存储编辑器实例
    • 避免频繁操作 DOM
  3. 安全策略

    • 启用 XSS 过滤
    editorConfig = {MENU_CONF: {uploadImage: {customAlert: (s) => { alert(s) }}}
    }
    

使用组件:

<RichTextEditor v-model="content" />
六、总结

通过本文的实践,我们已经实现了:
✅ 编辑器的完整集成
✅ 云端图片上传
✅ 数据双向绑定
✅ 工具栏定制
✅ 内存安全防护

预览功能:https://blog.csdn.net/m0_69838795/article/details/146050001?fromshare=blogdetail&sharetype=blogdetail&sharerId=146050001&sharerefer=PC&sharesource=m0_69838795&sharefrom=from_link

官方资源

  • WangEditor 官网
  • GitHub 仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FastGPT 引申:信息抽取到知识图谱的衔接流程

文章目录 信息抽取到知识图谱的衔接流程步骤1&#xff1a;原始信息抽取结果步骤2&#xff1a;数据标准化处理&#xff08;Python示例&#xff09;步骤3&#xff1a;Cypher代码动态生成&#xff08;Python驱动&#xff09; 关键衔接逻辑说明1. 唯一标识符生成规则2. 数据映射策略…

Webshell 入侵与防御全攻略

Webshell&#xff0c;是指攻击者上传到网站的远程控制后门&#xff0c;允许黑客像管理员一样远程控制网站&#xff0c;执行恶意命令&#xff0c;甚至完全接管网站。本文将带你深入了解 Webshell 的入侵方式以及相应的防御措施&#xff0c;帮助你加固自己的网站防线。 什么是 W…

NL2SQL-基于Dify+阿里通义千问大模型,实现自然语音自动生产SQL语句

本文基于Dify阿里通义千问大模型&#xff0c;实现自然语音自动生产SQL语句功能&#xff0c;话不多说直接上效果图 我们可以试着问他几个问题 查询每个部门的员工数量SELECT d.dept_name, COUNT(e.emp_no) AS employee_count FROM employees e JOIN dept_emp de ON e.emp_no d…

双链路提升网络传输的可靠性扩展可用带宽

为了提升网络传输的可靠性或增加网络可用带宽&#xff0c; 通常使用双链路冗余备份或者双链路聚合的方式。 本文介绍几种双链路网络通信的案例。 5GWiFi冗余传输 双Socket绑定不同网络接口&#xff1a;通过Android的ConnectivityManager绑定5G蜂窝网络和WiFi的Socket连接&…

Ubuntu22.04安装Ollama部署DeepSeek-R1:32B模型

一、环境准备 1.硬件要求 GPU: 至少 NVIDIA A30/A100 (显存 ≥ 24GB)内存: ≥ 64GB RAM存储: ≥ 100GB 可用空间 (模型文件约 60GB)2.软件依赖 # 验证NVIDIA驱动 nvidia-smi二、Ollama安装 方法 1:install.sh安装 运行一下安装命令: curl -fsSL https://ollama.com/inst…

LeetCode 解题思路 10(Hot 100)

解题思路&#xff1a; 上边&#xff1a; 从左到右遍历顶行&#xff0c;完成后上边界下移&#xff08;top&#xff09;。右边&#xff1a; 从上到下遍历右列&#xff0c;完成后右边界左移&#xff08;right–&#xff09;。下边&#xff1a; 从右到左遍历底行&#xff0c;完成后…

Checkpoint 模型与Stable Diffusion XL(SDXL)模型的区别

Checkpoint 模型与 Stable Diffusion XL&#xff08;SDXL&#xff09;模型 在功能、架构和应用场景上有显著区别&#xff0c;以下是主要差异的总结&#xff1a; 1. 基础架构与定位 Checkpoint 模型 是基于 Stable Diffusion 官方基础模型&#xff08;如 SD 1.4/1.5&#xff09;…

GCC RISCV 后端 -- C语言语法分析过程

在 GCC 编译一个 C 源代码时&#xff0c;先会通过宏处理&#xff0c;形成 一个叫转译单元&#xff08;translation_unit&#xff09;&#xff0c;接着进行语法分析&#xff0c;C 的语法分析入口是 static void c_parser_translation_unit(c_parser *parser); 接着就通过类似递…

第十五届蓝桥杯Scratch12月stema选拔赛真题—消失的水母

消失的水母 编程实现&#xff1a; 消失的水母。&#xff08;角色、背景非源素材&#xff09; 具体要求&#xff1a; 1、每次点击绿旗&#xff0c;水母说“请输入 2&#xff5e;10 的整数”&#xff0c;同时在舞台下方显示输入框&#xff0c;如图所示; 完整题目可点击下方链…

Redis设计与实现-数据结构

Redis数据结构 1、RedisObject对象2、简单动态字符串2.1 SDS定义2.2 SDS与C语言的区别2.3 SDS的空间分配策略2.3.1 空间预分配2.3.2 惰性空间释放 2.4 SDS的API 3、链表3.1 链表的定义3.2 链表的API 4、字典4.1 字典的定义4.2 哈希算法4.3 哈希表的扩缩4.3.1 哈希表扩缩的判断依…

由麻省理工学院计算机科学与人工智能实验室等机构创建低成本、高效率的物理驱动数据生成框架,助力接触丰富的机器人操作任务

2025-02-28&#xff0c;由麻省理工学院计算机科学与人工智能实验室&#xff08;CSAIL&#xff09;和机器人与人工智能研究所的研究团队创建了一种低成本的数据生成框架&#xff0c;通过结合物理模拟、人类演示和基于模型的规划&#xff0c;高效生成大规模、高质量的接触丰富型机…

RK3588开发笔记-fiq_debugger: cpu 0 not responding, reverting to cpu 3问题解决

目录 前言 一、FIQ Debugger介绍 二、rockchip平台配置方法 三、问题分析定位 IRQF_NOBALANCING 的含义 总结 前言 在进行 RK3588 开发的过程中,我们可能会遇到各种棘手的问题。其中,“fiq_debugger: cpu 0 not responding, reverting to cpu 3” 这个错误出现在RK3588的…

计算机视觉|ViT详解:打破视觉与语言界限

一、ViT 的诞生背景 在计算机视觉领域的发展中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;一直占据重要地位。自 2012 年 AlexNet 在 ImageNet 大赛中取得优异成绩后&#xff0c;CNN 在图像分类任务中显示出强大能力。随后&#xff0c;VGG、ResNet 等深度网络架构不…

SpringTask 引起的错误

SpringTask 引起的错误 1. 场景 在使用 SpringBoot 编写后台程序时&#xff0c;当在浏览器页面中发起请求时&#xff0c;MP 自动填充来完成一些字段的填充&#xff0c;例如创建时间、创建人、更新时间、更新人等。但是当编写微信小程序时&#xff0c;由于一些字段无法进行自动…

FPGA学习篇——Verilog学习4

1.1 结构语句 结构语句主要是initial语句和always语句&#xff0c;initial 语句它在模块中只执行一次&#xff0c;而always语句则不断重复执行&#xff0c;以下是一个比较好解释的图: (图片来源于知乎博主罗成&#xff0c;画的很好很直观&#xff01;) 1.1.1 initial语句 ini…

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(未成功版)

【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信&#xff08;未成功版&#xff09; 上次说基于UDP的打洞程序改了五版一直没有成功&#xff0c;要写一下问题所在&#xff0c;但是我后续又查询了一些资料&#xff0c;成功实现了&#xff0c;这次先写一下未成功的…

【Python编程】高性能Python Web服务部署架构解析

一、FastAPI 与 Uvicorn/Gunicorn 的协同 1. 开发环境&#xff1a;Uvicorn 直接驱动 作用&#xff1a;Uvicorn 作为 ASGI 服务器&#xff0c;原生支持 FastAPI 的异步特性&#xff0c;提供热重载&#xff08;--reload&#xff09;和高效异步请求处理。 启动命令&#xff1a; u…

前端权限流程(基于rbac实现思想)

1. 权限控制 1.1. 实现思想 基于rbac权限控制思想实现&#xff0c;给用户分配角色&#xff0c;给角色分配权限 给用户分配角色业务 注意&#xff1a;上方图片是个示例图&#xff0c;代表给用户分配职位(角色)&#xff0c;页面中使用了Element-plus的el- checkbox组件…

软件高级架构师 - 软件工程

补充中 测试 测试类型 静态测试 动态测试 测试阶段 单元测试中&#xff0c;包含性能测试&#xff0c;如下&#xff1a; 集成测试中&#xff0c;包含以下&#xff1a; 维护 遗留系统处置 高水平低价值&#xff1a;采取集成 对于这类系统&#xff0c;采取 集成 的方式&…

python3.13安装教程【2025】python3.13超详细图文教程(包含安装包)

文章目录 前言一、python3.13安装包下载二、Python 3.13安装步骤三、Python3.13验证 前言 本教程将为你详细介绍 Python 3.13 python3.13安装教程&#xff0c;帮助你顺利搭建起 Python 3.13 开发环境&#xff0c;快速投身于 Python 编程的精彩实践中。 一、python3.13安装包下…