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 相关文章推荐
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
JavaScript学习笔记之取数组中最大值和最小值
Mar 23 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
JavaScript中校验银行卡号的实现代码
Dec 19 Javascript
BootStrap 页签切换失效的解决方法
Aug 17 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
Dec 25 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
Apr 24 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 Javascript
JS轻量级函数式编程实现XDM二
Jun 16 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-fpm配置详解
2014/02/12 PHP
PHP实现事件机制的方法
2015/07/10 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
html中通过JS获取JSON数据并加载的方法
2017/11/30 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
从零学python系列之从文件读取和保存数据
2014/05/23 Python
Python列表推导式、字典推导式与集合推导式用法实例分析
2018/02/07 Python
Python退火算法在高次方程的应用
2018/07/26 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
Python 解析简单的XML数据
2020/07/24 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
Ruby如何进行文件操作
2014/07/17 面试题
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
体育教师个人工作总结
2015/02/09 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB