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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
javascript 动态数据下的锚点错位问题解决方法
Dec 24 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
Apr 07 Javascript
javascript学习(二)javascript常见问题总结
Jan 02 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
理解javascript模块化
Mar 28 Javascript
jQuery soColorPacker 网页拾色器
Jun 22 Javascript
AngularJS入门教程之多视图切换用法示例
Nov 02 Javascript
JSON在Javascript中的使用(eval和JSON.parse的区别)详细解析
Sep 05 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
Jan 05 Javascript
javascript canvas API内容整理
Feb 16 Javascript
JavaScript读取本地文件常用方法流程解析
Oct 12 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
php使用curl获取https请求的方法
2015/02/11 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
vuejs2.0子组件改变父组件的数据实例
2017/05/10 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
python 实现插入排序算法
2012/06/05 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
2015/03/31 Python
Python语法快速入门指南
2015/10/12 Python
Python三级目录展示的实现方法
2016/09/28 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
2014年四风问题自我剖析材料
2014/09/15 职场文书
招商引资工作汇报
2014/10/28 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
python xlwt模块的使用解析
2021/04/13 Python