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 相关文章推荐
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
javascript无刷新评论实现方法
May 13 Javascript
JavaScript实现图片轮播的方法
Jul 31 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
JS实现音量控制拖动
Jan 15 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 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 mysql索引问题
2008/06/07 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
JavaScript Konami Code 实现代码
2009/07/29 Javascript
JavaScript null和undefined区别分析
2009/10/14 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jQuery Ztree行政地区树状展示(点击加载)
2016/11/09 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
Angularjs中使用layDate日期控件示例
2017/01/11 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
2020/06/11 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
python实现五子棋小游戏
2020/03/25 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
Python中turtle库的使用实例
2019/09/09 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
单位成立周年感言
2014/01/26 职场文书
仓库文员岗位职责
2014/04/06 职场文书
考察邀请函范文
2015/01/31 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
2015年乡镇发展党员工作总结
2015/03/31 职场文书
企业内部管理控制:银行存款控制制度范本
2020/01/10 职场文书
学习nginx基础知识
2021/09/04 Servers
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技