找了很多写过的文章,也具体试验过都写的不太完整,这款编辑器借用Vue提供的语法糖实现了数据的双向绑定,不用你自己去getContent或setContent。

对比其他的富文本编辑器,Ueditor的功能相对来说是最强的,对于在Vue中集成Ueditor想必还是有这个需求的。

下面具体说下如何在Vue中集成Ueditor以及在后端如何进行配置提供上传功能。

准备工作

从Ueditor官网上下载Ueditor完整源码以及Jsp版本

Github地址为:vue-ueditor-wrap

Ueditor官网地址为:Ueditor

下载好之后,将Jsp版本解压,解压后文件夹改名为UEditor,将文件夹中的 jsp目录删掉,将UEditor文件夹拷贝到Vue的 public 目录下,结构如下:


因为我的项目是 vue 3.x,所以把 UEditor 文件夹放入项目的 public 目录下。

如果是项目是vue2.x,那么把 UEditor 文件夹放入项目 static 目录下

项目具体使用

1、开始安装 vue-ueditor-wrap 插件

npm i vue-ueditor-wrap

注意:安装后重启项目

2、引入VueUeditorWrap 组件

在想要使用富文本的vue中引入如下组件

import VueUeditorWrap from 'vue-ueditor-wrap'

3、注册组件

components: { VueUeditorWrap },

4、v-model绑定数据

<template><div><vue-ueditor-wrap v-model="funcDesc" :config="myConfig" @ready="onEditorReady" /></div>
</template>
data () {return {funcDesc: '123'}
}

5、根据项目需求修改配置,完整配置选项查看 ueditor.config.js 源码

data() {return {// 遮罩层loading: true,// 查询参数queryParams: {docNo: this.docNo},// 更新的idids: '',// 富文本编辑器配置myConfig: {// 如果需要上传功能,找后端小伙伴要服务器接口地址// serverUrl: this.$config.baseUrl + 'ueditor/ueditorConfig',// serverUrl: 'http://localhost:8090/ueditor/ueditorConfig',// 你的UEditor资源存放的路径,相对于打包后的index.htmlUEDITOR_HOME_URL: '/UEditor/',// 编辑器不自动被内容撑高autoHeightEnabled: false,// 工具栏是否可以浮动autoFloatEnabled: false,// 初始容器高度initialFrameHeight: 340,// 初始容器宽度initialFrameWidth: '100%',// 关闭自动保存enableAutoSave: true},// 富文本数据funcDesc: '123'}},

@ready="onEditorReady" 用于获取 UEditor 实例

效果图

如何更新富文本内容保存到数据库

// 监听事件
watch: {funcDesc() {this.preview();},
},
created() {this.getList()this.handleUpdate()
},
methods: {onEditorReady(editor) {console.log(editor)},// 更新数据preview() {let query = { id: this.ids, funcDesc: this.funcDesc };updateObj(query).then(response => {if (response.code === 200) {} else {self.msgError(response.msg);}});},// 查询列表数据getList() {this.loading = trueselectDocInfo(this.docNo).then(response => {this.funcDesc = response.data.funcDescthis.ids = response.data.idthis.loading = false}).catch(() => [(this.loading = false)])}
}

说明:

  1. 主要是通过 watch 来监听富文本中内容的改变,来触发请求的调用。
  2. v-model中的funcDesc变量 要和 watch 监听事件中方法的变量名一致,这样才知道监听的是那个属性的变好。
  3. 效果图展示的数据是从数据库查询出来的,具体后台省略…

遇到的问题及解决方法

如果页面可以看到编辑器,但是控制台报如下错误;

错误1:


解决办法:将ueditor.config.js文件中var URL=""的值改为将对路径,刷新就不再报错了。(代码在第22行左右)

// var URL = window.UEDITOR_HOME_URL || getUEBasePath();
var URL = '/public/UEditor'; // 根据自己的文件放在哪里决定这个路径,不要盲目CV

错误2:

上传图片、文件等功能是需要与后台配合的,而你没有给 config 属性传递正确的 serverUrl;关于如何搭建上传接口,可以参考官方文档。

错误3:

这是 UEDITOR_HOME_URL 参数配置错误导致的。在 vue cli 2.x 生成的项目中使用本组件,默认值是 '/static/UEditor/',在 vue cli 3.x 生成的项目中,默认值是 process.env.BASE_URL + 'UEditor/'`` 。但这并不能满足所有情况。例如你的项目不是部署在网站根目录下,如“http://www.example.com/my-app/”,你可能需要设置为"/my-app/static/UEditor/"。是否使用了相对路径、路由是否使用history` 模式、服务器配置是否正确等等都有可能会产生影响。

如何自定义配置toolbars工具条

修改public/UEditor 目录下的ueditor.config.js 文件下 toolbars 的配置

toolbars: [['anchor', //锚点'undo', //撤销'redo', //重做'bold', //加粗'indent', //首行缩进'snapscreen', //截图'italic', //斜体'underline', //下划线'strikethrough', //删除线'subscript', //下标'fontborder', //字符边框'superscript', //上标'formatmatch', //格式刷'source', //源代码'blockquote', //引用'pasteplain', //纯文本粘贴模式'selectall', //全选'print', //打印'preview', //预览'horizontal', //分隔线'removeformat', //清除格式'time', //时间'date', //日期'unlink', //取消链接'insertrow', //前插入行'insertcol', //前插入列'mergeright', //右合并单元格'mergedown', //下合并单元格'deleterow', //删除行'deletecol', //删除列'splittorows', //拆分成行'splittocols', //拆分成列'splittocells', //完全拆分单元格'deletecaption', //删除表格标题'inserttitle', //插入标题'mergecells', //合并多个单元格'deletetable', //删除表格'cleardoc', //清空文档'insertparagraphbeforetable', //表格前插入行'insertcode', //代码语言'fontfamily', //字体'fontsize', //字号'paragraph', //段落格式'simpleupload', //单图上传'insertimage', //多图上传'edittable', //表格属性'edittd', //单元格属性'link', //超链接'emotion', //表情'spechars', //特殊字符'searchreplace', //查询替换'map', //Baidu地图'gmap', //Google地图'insertvideo', //视频'help', //帮助'justifyleft', //居左对齐'justifyright', //居右对齐'justifycenter', //居中对齐'justifyjustify', //两端对齐'forecolor', //字体颜色'backcolor', //背景色'insertorderedlist', //有序列表'insertunorderedlist', //无序列表'fullscreen', //全屏'directionalityltr', //从左向右输入'directionalityrtl', //从右向左输入'rowspacingtop', //段前距'rowspacingbottom', //段后距'pagebreak', //分页'insertframe', //插入Iframe'imagenone', //默认'imageleft', //左浮动'imageright', //右浮动'attachment', //附件'imagecenter', //居中'wordimage', //图片转存'lineheight', //行间距'edittip', //编辑提示'customstyle', //自定义标题'autotypeset', //自动排版'webapp', //百度应用'touppercase', //字母大写'tolowercase', //字母小写'background', //背景'template', //模板'scrawl', //涂鸦'music', //音乐'inserttable', //插入表格'drafts', // 从草稿箱加载'charts', // 图表]
]

参考文章包括:文章1、文章2


如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

Vue集成百度的Ueditor的前后端实现相关推荐

  1. Vue集成百度的Ueditor 前端+后台

    1. vue安装命令** npm i vue-ueditor-wrap 2. 下载插件** Ueditor官网地址为:Ueditor 3. 插件位置** 下载好之后,将Jsp版本解压,解压后文件夹改名 ...

  2. 前端视角漫谈百度ueditor编辑器前后端分离配置

    此文旨在前后端分离的前提下,配置ueditor联通前后端接口,实现ueditor的文件上传(一般是图片上传)并在编辑器中反显 目录结构 百度的ueditor组件提供了各种主流的后端语言(Java,As ...

  3. vue上传大文件/视频前后端(java)代码

    vue上传大文件/视频前后端(java)代码 一.上传组件 二.后端java代码 注意: 一.上传组件 <template><div><!-- 上传组件 -->&l ...

  4. 计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码

    计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 设计模式:MVC 架构:B ...

  5. 驾校分期-众筹项目java前后端分离项目vue(微信小程序+java前后端源码下载)

    可以idea直接打开,mysql数据库项目,前后端分离项目vue,分期可自动设置,自动换算金额 驾校分期-众筹项目java前后端分离项目vue(微信小程序+java前后端源码下载)

  6. 计算机毕业设计-基于ssm+vue的化妆品商城管理系统(前后端分离)java代码

    计算机毕业设计-基于ssm+vue的化妆品商城管理系统(前后端分离)java代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言:Java 设计模式: ...

  7. 基于VUE只是作为模版引擎的前后端分离

    首先请原谅本文标题取的有点大,但并非为了哗众取宠.本文取这个标题主要有3个原因,这也是写作本文的初衷: (1)目前国内几乎搜索不到全面讲解如何搭建前后端分离框架的文章,讲前后端分离框架思想的就更少了, ...

  8. vue前后分离session实现_vue2 前后端分离项目ajax跨域session问题解决

    最近学习使用vuejs前后端分离,重构一个已有的后台管理系统,遇到了下面这个问题: 实现跨域请求时,每次ajax请求都是新的session,导致无法获取登录信息,所有的请求都被判定为未登陆. 1. v ...

  9. Vue学习笔记(三) —— 前后端交互

    简介 本文主要是为了介绍前端交互的相关知识,而严格来讲,这也不算是Vue的专属知识,但是却是必须要指定的.本文开始简单说了ajax.jquery 的方式,但是随着SPA开发模式的大火,相继出现了一些新 ...

最新文章

  1. Spring Boot实战:过滤器、拦截器与切片
  2. 关于nginx rewrtie的四种flag
  3. 【datawhale 】打卡 task 01--深度学习
  4. centos 更改mysql数据库目录位置_centos更改MySQL数据库目录位置
  5. python 堆栈溢出_python - 使用CFFI释放内存时,“ MemoryError:堆栈溢出”是什么意思? - 堆栈内存溢出...
  6. 重磅!win10无法安装.NET Framework 3.5服务解决办法(附离线安装包下载)
  7. mysql -连表查询
  8. android游戏渠道支付,Android渠道支付隐患及推荐解决方案
  9. Android音频压缩方法
  10. 【渝粤教育】广东开放大学 企业财务报表分析 形成性考核 (26)
  11. 线性回归模型之波士顿房价预测
  12. android 蓝牙发送失败怎么办,在Android中通过蓝牙发送文件时出错?
  13. 罗丹明RB/四甲基罗丹明标记酰胺化果胶Amidated Pectin, Rhodamine B/TRITC labeled;Rhodamine B/TRITC-Amidated Pectin
  14. 你想每天定时向你的女朋友发一句早安吗 ?教你实现一个微信机器人
  15. 原型设计都有哪些好用的软件?
  16. QTextStream 类(文本流)和 QDataStream 类(数据流)
  17. Unambiguous Text Localization, Retrieval,and Recognition for Cluttered Scenes
  18. mp4v2再学习 -- Linux 下安装说明
  19. self和[self class]
  20. 详解redis5.x版本

热门文章

  1. 软件性能测试模拟笔试题目
  2. [转载] 支持支付宝付款的四大国外主机
  3. SAP 领料BAPI BAPI_GOODSMVT_CREATE 提示 短缺未限制使用的SL
  4. linux命令前期记不住,linux前期 - 浪里小白龙l的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. win10硬盘锁怎么解除_电脑磁盘加密了怎么解密_win10如何关闭硬盘加密
  6. java 内存 监控_Java内存监视
  7. 5G助推全球新经济变革,十万亿产业研讨盛会等你来
  8. 会议OA(会议排座送审)
  9. A Game of Thrones(50)
  10. #4508. Triples I