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 相关文章推荐
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
基于jQuery架构javascript基础体系
Jan 01 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
Dec 02 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
Jun 12 Javascript
SeaJS中use函数用法实例分析
Oct 10 Javascript
js实现轮播图的完整代码
Oct 26 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
Mar 19 Javascript
JS实现transform实现扇子效果
Jan 17 Javascript
微信小程序修改checkbox的样式代码实例
Jan 21 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
jQuery中设置form表单中action值的实现方法
2016/05/25 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
jquery精度计算代码 jquery指定精确小数位
2017/02/06 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
python实现在sqlite动态创建表的方法
2015/05/08 Python
打包发布Python模块的方法详解
2016/09/18 Python
Django应用程序中如何发送电子邮件详解
2017/02/04 Python
python 二分查找和快速排序实例详解
2017/10/13 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
Python ellipsis 的用法详解
2020/11/20 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
物业保安员岗位职责制度
2014/01/30 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
工作自我评价范文
2015/03/05 职场文书
如何Python使用re模块实现okenizer
2022/04/30 Python