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函数库-集合框架
Apr 27 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
Mar 24 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
Aug 21 Javascript
JS实现网站菜单拖拽移位效果的方法
Sep 24 Javascript
JavaScript函数柯里化详解
Apr 29 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 Javascript
vue2实现数据请求显示loading图
Nov 28 Javascript
webpack打包react项目的实现方法
Jun 21 Javascript
实现elementUI表单的全局验证的方法步骤
Apr 29 Javascript
Vue 打包体积优化方案小结
May 20 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 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
使用sockets:从新闻组中获取文章(二)
2006/10/09 PHP
php常用表单验证类用法实例
2015/06/18 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
javascript中对对层的控制
2006/12/29 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
2013/04/23 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
高效的jquery数字滚动特效
2015/12/17 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
详解webpack分离css单独打包
2017/06/21 Javascript
使用nvm管理不同版本的node与npm的方法
2017/10/31 Javascript
微信小程序实现发红包功能
2018/07/11 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
Python生成pdf文件的方法
2014/08/04 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
python中tab键是什么意思
2020/06/18 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
班级聚会策划书
2014/01/16 职场文书
实习单位评语
2014/04/26 职场文书
白鹤梁导游词
2015/02/06 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
化工生产实习心得体会
2016/01/22 职场文书
配置nginx负载均衡
2022/05/06 Servers