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 国际象棋棋盘 实现代码
Jun 26 Javascript
javascript 限制输入脚本大全
Nov 03 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
Jun 12 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
图解js图片轮播效果
Dec 20 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
深入探讨Vue.js组件和组件通信
Sep 12 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
npm 下载指定版本的组件方法
May 17 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
JS实现li标签的删除
Apr 12 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 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和ACCESS写聊天室(一)
2006/10/09 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
php面向对象值单例模式
2016/05/03 PHP
PHP多进程编程之僵尸进程问题的理解
2017/10/15 PHP
javascript原型链继承用法实例分析
2015/01/28 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
深入浅析Python字符编码
2015/11/12 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
阿提哈德航空官方网站:Etihad Airways
2017/01/06 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
感恩节活动策划方案
2014/05/16 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
求职自我评价范文
2015/03/09 职场文书
辩护意见书
2015/06/04 职场文书
人民的好儿女观后感
2015/06/18 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
Nginx配置Https安全认证的实现
2021/05/26 Servers
CSS实现切角+边框+投影+内容背景色渐变效果
2021/11/01 HTML / CSS
php实现自动生成验证码的实例讲解
2021/11/17 PHP
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
分析SQL窗口函数之聚合窗口函数
2022/04/21 Oracle