React中使用UMEditor的方法示例


Posted in Javascript onDecember 27, 2019

最近项目中需要使用富文本编辑器,参考了运营小姐姐日常使用平台上的编辑器,最后考虑采用百度的UMEditor。因为轻量,功能和配置简单,没有很多定制化的功能,所以没采用UEditor。不过我后续会出一篇文章将UEditor的二次开发。

umeditor的引入

组件设计

首先看一下组件大致的内容:

1.组件props:

React中使用UMEditor的方法示例

2.组件关键的成员属性:

React中使用UMEditor的方法示例

3.简单的render:

React中使用UMEditor的方法示例

4.UMEditor的实例化

React中使用UMEditor的方法示例

UMEditor源码里需要改动的主要就是图片的请求了,配置中的imgUrl我传的是一个方法,这个方法中请求后台并返回Promise<{url:string}>

源码修改

源码修改两个文件

image.js中两处更改

React中使用UMEditor的方法示例

React中使用UMEditor的方法示例

autoupload.js中一处修改

React中使用UMEditor的方法示例

UMEditor的源码存放在dll目录下,打包时会被webpack拷贝道相应的目录下,UMEDITOR_HOME_URL和这个目录路径保持一致

React中使用UMEditor的方法示例

umeditor的依赖处理

文件合并

由于依赖文件过多,我们使用gulp合并一下

React中使用UMEditor的方法示例

core文件夹下的依赖合并为core.min.js,其他plugin,ui,addapter也一样合并为相应的min.js

原本由editor_api.js引入依赖的,现在我们自己写个方法引入。

依赖加载

组件中定义需要引入的文件,这是一个二维数组,同级的文件按顺序引入,不同级别的可以并发请求,比如:['/third-party/jquery.min.js', '/third-party/template.min.js']中的两个文件同时请求,但是保证它们都load完再请求后面的文件

React中使用UMEditor的方法示例

加载的时候使用SyncRequire方法

React中使用UMEditor的方法示例

使用一步迭代器实现可控加载

React中使用UMEditor的方法示例

loadDep负责文件加载,具体如下:

React中使用UMEditor的方法示例

SyncRequire内部维护一个异步迭代器,迭代的对象是每一个文件的加载。最后使用for await进行异步迭代

React中使用UMEditor的方法示例

如果是一个文件路径数组,则说明这个数组中的文件可以同时使用loadDep加载,如果是一个文件路径字符串,则说明这个文件加载完才可以加载后面的文件。loaders具体实现如下

React中使用UMEditor的方法示例

好了,有了这个SyncRequire方法,就可以既同时又顺序加载我们的外部js或者css文件了,最后可以在控制台中验证效果

React中使用UMEditor的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 表单取值常用代码
Dec 22 Javascript
jQuery ctrl+Enter shift+Enter实现代码
Feb 07 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
May 11 Javascript
jQuery选择器全集详解
Nov 24 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
JavaScript中的splice方法用法详解
Jul 20 Javascript
webpack4.x打包过程详解
Jul 18 Javascript
Nginx设置为Node.js的前端服务器方法总结
Mar 27 Javascript
node.js使用yargs处理命令行参数操作示例
Feb 11 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 Javascript
解决vue2中使用elementUi打包报错的问题
Sep 22 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 #Javascript
JavaScript中变量提升机制示例详解
Dec 27 #Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 #Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 #Javascript
node.js Promise对象的使用方法实例分析
Dec 26 #Javascript
js回调函数仿360开机
Dec 26 #Javascript
js仿360开机效果
Dec 26 #Javascript
You might like
PHP编码转换
2012/11/05 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
2012/01/04 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
JavaScript中的立即执行函数表达式介绍
2015/03/15 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
[01:08:29]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第一场 1月9日
2021/03/11 DOTA
Python中文件操作简明介绍
2015/04/13 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
Django框架模板用法入门教程
2019/11/04 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
大学生求职推荐信
2013/11/27 职场文书
升国旗仪式主持词
2014/03/19 职场文书
小学优秀教育工作者事迹材料
2014/05/09 职场文书
个人年度总结报告
2015/03/09 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL