1、介绍

wangeditor基于 slate 内核开发,但不依赖于 React ,所以它本身是无框架依赖的。并且,官方封装了 Vue React 组件,可以很方便的用于 Vue React 等框架。

本文介绍的是wangeditor v5版本,所用到的项目例子和版本是vue3+wangeditor v5

2、安装

安装 editor

yarn add @wangeditor/editor# 或者 npm install @wangeditor/editor --save

安装 React 组件

yarn add @wangeditor/editor-for-react
# 或者 npm install @wangeditor/editor-for-react --save

安装 Vue2 组件

yarn add @wangeditor/editor-for-vue
# 或者 npm install @wangeditor/editor-for-vue --save

安装 Vue3 组件

yarn add @wangeditor/editor-for-vue@next
# 或者 npm install @wangeditor/editor-for-vue@next --save

3、创建编辑器

项目准备前,需安装 @wangeditor/editor@wangeditor/editor-for-vue@next

在vue3项目中的文件中新建模板

<template><div style="border: 1px solid #ccc"><Toolbar:editorId="editorId":defaultConfig="toolbarConfig":mode="mode"style="border-bottom: 1px solid #ccc"/><Editor:editorId="editorId":defaultConfig="editorConfig":defaultContent="getDefaultContent":mode="mode"style="height: 500px"/></div>
</template>
<script>
import { computed, onBeforeUnmount, ref } from 'vue'
import { Editor, Toolbar, getEditor, removeEditor } from '@wangeditor/editor-for-vue'
import cloneDeep from 'lodash.clonedeep'export default {components: { Editor, Toolbar },setup() {const editorId = 'editor' //【注意】编辑器 id ,要全局唯一const defaultContent = []const getDefaultContent = computed(() => { // 注意,要深拷贝 defaultContent ,否则报错return cloneDeep(defaultContent.value)}) // 注意,要深拷贝 defaultContent ,否则报错const toolbarConfig = {}const editorConfig = { placeholder: '请输入内容...' }// 组件销毁时,也及时销毁编辑器onBeforeUnmount(() => {const editor = getEditor(editorId)if (editor == null) returnsetTimeout(() => { //此处最好异步处理,否则销毁编辑器可能会报错editor.destroy()}, 100)removeEditor(editorId)})return {editorId,mode: 'default',getDefaultContent,toolbarConfig,editorConfig,};}
}
</script>
<style src="@wangeditor/editor/dist/css/style.css"></style> //引入样式

toolbarConfig可以设置需要或者不需要的工具栏选项

 const toolbarConfig = {excludeKeys: ["fullScreen", "code", "codeBlock", "bulletedList",              "numberedList", "blockquote", "bold", "italic"] //此处不需要的工具栏选项
}

想要获取工具栏选项可以执行一下代码

import { DomEditor } from '@wangeditor/editor'
const toolbar = DomEditor.getToolbar(editor)
const menu = editor.getAllMenuKeys()
const bar = toolbar.getConfig().toolbarKeys

4、异步设置内容

如果需要从接口获取内容,渲染进wangeditor组件,注意,不可以直接修改 defaultContent ,而是要异步渲染组件。可以使用 Vue3 ref 定义一个响应式变量 isEditorShow = false,在 请求结束时设置为 true

import { computed, ref, reactive } from 'vue'const defaultContent = ref([])const isEditorShow = ref(false)const getDefaultContent = computed(() => { return cloneDeep(defaultContent.value)})
  const getRichText = () => {YourApi().then(res => {defaultContent.value = res.data.protocolContent //拿到后端返回的数据isEditorShow.value = true})}
   <div v-if="isEditorShow" style="border: 1px solid #ccc"><Toolbar:editorId="editorId":defaultConfig="toolbarConfig":mode="mode"style="border-bottom: 1px solid #ccc"/><Editor:editorId="editorId":defaultConfig="editorConfig":defaultContent="getDefaultContent":mode="mode"style="height: 500px"/></div>

注:后端返回的数据格式,应该和编写传输的格式一样通过以下代码获取(或者查看官方文档介绍 https://www.wangeditor.com/v5/guide/node-define.html#%E6%98%AF%E4%BB%80%E4%B9%88

 import { Editor, Toolbar, getEditor, removeEditor } from '@wangeditor/editor-for-vue'const editor = getEditor(editorId)const children = editor.children

5、多个编辑器的使用

wangEditor 支持多个编辑器共存,正常创建即可

<div id="toolbar-container-1"></div>
<div id="editor-container-1"></div><hr><div id="toolbar-container-2"></div>
<div id="editor-container-2"></div>
// 创建编辑器1
const editor1 = createEditor({selector: '#editor-container-1',content: [],mode: 'default'
})
// 创建工具栏1
const toolbar1 = createToolbar({editor: editor1,selector: '#toolbar-container-1',mode: 'default'
})// 创建编辑器2
const editor2 = createEditor({selector: '#editor-container-2',content: [],mode: 'simple'
})
// 创建工具栏2
const toolbar2 = createToolbar({editor: editor2,selector: '#toolbar-container-2',mode: 'simple'
})

或者采用组件引用的方式。编辑器的id一定不能相同

import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
export default {components: { Editor, Toolbar },setup() {const editorId = 'editor' //【注意】编辑器 id ,要全局唯一const editorId2 = 'editor2'const defaultContent = ref([])const defaultSecretContent = ref([])const isEditorShow = ref(false)const isEditorSecretShow = ref(false)const getDefaultContent = computed(() => { return cloneDeep(defaultContent.value)})const getDefaultSecretContent = computed(() => {return cloneDeep(defaultSecretContent.value)})}
}
<div v-if="isEditorShow" style="border: 1px solid #ccc"><Toolbar:editorId="editorId":defaultConfig="toolbarConfig":mode="mode"style="border-bottom: 1px solid #ccc"/><Editor:editorId="editorId":defaultConfig="editorConfig":defaultContent="getDefaultContent":mode="mode"style="height: 500px"/></div>
<div v-if="isEditorSecretShow" style="border: 1px solid #ccc"><Toolbar:editorId="editorId2":defaultConfig="toolbarConfig":mode="mode"style="border-bottom: 1px solid #ccc"/><Editor:editorId="editorId2":defaultConfig="editorConfig":defaultContent="getDefaultSecretContent":mode="mode"style="height: 500px"/></div>

上述的多个编辑器功能,使用的方法和一个编辑器的相同。

6、富文本中上传图片到oss,并显示

wangeditor支持自定义上传图片(远程服务器)

需要在editorConfig中通过customUpload方法上传。可见官方文档

https://www.wangeditor.com/v5/guide/menu-config.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8A%9F%E8%83%BD

const customUpload = async (file, insertFn) => {const fileName = createNewFileName(file.name)const result = await ossUpload({ //此处为自行封装的oss上传方法type: 'image',fileName,file: file})insertFn(result.url)}const editorConfig = {MENU_CONF: {uploadImage: {customUpload}}}

wangEditor-v5使用相关推荐

  1. 15 行代码在 wangEditor v5 使用数学公式

    前言 wangEditor v5 正式版发布在即,为了验证它的扩展性,我开发了几个常用的第三方插件.本文介绍一下 formula 插件的设计和使用. 插入数学公式要使用 LateX 语法,渲染公式需要 ...

  2. wangeditor v5 在vue中的使用

    wangeditor的使用 下载依赖 cnpm i @wangeditor/editor @wangeditor/editor-for-vue -D 基础使用 <div style=" ...

  3. wangeditor富文本编辑器使用过程中遇到的问题以及解决办法

    背景 我的项目之前用的富文本编辑器是quill,之前其实考虑用过wangeditor,但是当时wangeditor V3的英文支持不友好,而我们业务是面向海外的,所以综合考虑下来用了quill. 最近 ...

  4. wangEditor富文本编辑器的调用开发实录2(V5版本自定义粘贴,去除复制word或网页html冗余样式代码的解决方案)

    wangEditor富文本编辑器:自定义粘贴,去除复制word或网页html冗余样式代码的解决方案 1.环境说明 2.解决方案 3.完整代码 总结 在使用wangEditor富文本编辑器时,当从wor ...

  5. wangEditor 5 - 修改工具栏 toolbar 默认背景色(去掉背景颜色改为透明)

    前言 注意:本文章使用的是 V5 版本的 wangEditor 富文本编辑器,其他版本可借鉴. 默认情况下,工具栏背景色为纯白色: 自定义修改背景颜色: 还可以直接让其透明: 解决方案 如果您将富文本 ...

  6. wangEditor富文本编辑器安装与入门

    文章目录 官网 安装 #npm #CDN 使用 官网 https://www.wangeditor.com/v5/ 安装 包括 vue React 组件 #npm 安装 editor yarn add ...

  7. 关于wangEditor 5的使用以及使用的一些错误

    其实官网https://www.wangeditor.com/v5/for-frame.html#demo也说的很详细,这不是记录一下,哈哈 如果是vue2项目,下面先讲解vue2项目如何用 npm ...

  8. 富文本编辑器 wangeditor、Dialog中使用wangeditor、多次生成wangeditor实例

    富文本编辑器如同我们在CSDN上写文章是的编辑框(如下图),使用场景通常是在编辑详细资料,内容.本次实习过程学习使用了wangeditor,是一个简洁,文档齐全的富文本工具.wangeditor官方文 ...

  9. wangEditor富文本编辑器获取html内容

    该示例为官方示例,代码仅供参考. 功能:获取html内容,目录结构如下: get-html.html <!DOCTYPE html> <html lang="en" ...

  10. 关于wangEditor 5在CDN的使用,vue2的使用以及报错解决

    wangEditor 5 在vue2项目中的使用在上一篇写的很详细,还没有看到的小伙伴可以去看上一篇, 这次主要说一下我为什么在vue项目中使用CDN. 因为我在另一个vue项目中使用一切正常,当我换 ...

最新文章

  1. [转贴]超过80%的80后大学生不知道自己将来要干什么
  2. Onekey Ghost找不到硬盘分区怎么办
  3. 数据库实现列值合并为行
  4. VSCode尝试在目标目录创建文件发生错误
  5. HDU1757:A Simple Math Problem(矩阵快速幂)
  6. sublime Text2 2.0.2 build 2221 64位 破解(已测试)
  7. 记录这两天所学的东西
  8. VRay高级材质素材分享,精选,热门
  9. python作函数图像_如何使用python的matplotlib模块画余切函数图像
  10. 坚持分享的魅力,我超越了当年的榜样
  11. 【测试】史上最详细的测试用例设计方法讲解
  12. 提高计算机系统速度的相关技术,提高计算机运行速度的几种措施
  13. oracle打开audit,oracle开启audit(审计)
  14. python怎么输出变量加文字书名_python的交互模式怎么输出名文汉字
  15. windows电脑端同时打开多个微信的方法
  16. 戴尔硬件服务器,服务器硬件、结构介绍_Intel Xeon E5-2660 v4_服务器x86服务器-中关村在线...
  17. Crazy Engine 3.0(又名盘古引擎)的技术特性
  18. 微信小程序获取客户端IP地址,HTTPS接口(ts\js)
  19. 中国计算机艺术的发展趋势,浅谈数字媒体艺术的发展趋势
  20. 清华博士生导师亲授:高考志愿计算机/AI专业填报指南

热门文章

  1. 中文编程专栏目录, 初衷和希冀
  2. Lidar Studio点云处理与分析软件V1.1
  3. 【赶紧收藏】平面设计必备字体,广告设计常用字体
  4. 数字全息干涉重建算法研究
  5. TeamView for Linux是这样实现的!
  6. tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
  7. c语言对excel进行分类,六ABC分类法的Excel实现.doc
  8. SVN安装包汉化VS插件
  9. 移远EC20 R2.0 AT指令拨号流程
  10. Telerik ui kendo for jquery 2022源码版