热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

reacthtml编辑器,React项目中使用百度编辑器Ueditor

近期在做前端项目,需要用到富文本编辑器。因为团队提出的是使用百度Ueditor,所以也就没有再去看其他的富文本编辑器。百度编辑器诞生比较久,

近期在做前端项目,需要用到富文本编辑器。因为团队提出的是使用百度Ueditor,所以也就没有再去看其他的富文本编辑器。

百度编辑器诞生比较久,没有使用模块化,不修改一下不能直接在React中使用。而我对前端模块化那些东西并没有研究过,所以直接参考的EdmundChen的react+ueditor。

通过看他的文章和他的源码再加上控制台那些报错一步步就调试改正到最后可以正常使用基本功能。

这里在这里写下做个记录,以便后续使用不用从头再调试。

开始纯净的React项目

我自己建了一个只引用了webpack的项目,加入了babel loader,其他loader都没有引入,github

git clone git@github.com:Wyii/react-starter.git

git fetch

git checkout react

切换到react分支就是前面讲的基础的react项目。

下载百度编辑器

去百度编辑器GitHub直接clone最新项目

git clone git@github.com:fex-team/ueditor.git

npm install

grunt default

按照官方的步骤执行就行了,没有grunt的先装grunt

npm install -g grunt-cli

这时候会生成一个dist文件夹,

将dist文件夹中包含ueditor.all.js文件的那一级目录全部复制到React项目的根目录的ueditor文件夹中,名字随意,demo.html是我自己建着尝试的,不用理会。

然后把百度editor项目下的lang文件夹也复制到react项目的ueditor文件夹中。

1d3d630ca0e6

react项目的ueditor文件夹

修改ueditor.all.js

这里的修改就是使其的导出方式为模块化,并且以import的方式引入其他文件依赖。

import I18N from './lang/zh-cn/zh-cn';

import UEDITOR_CONFIG from './ueditor.config';

import './themes/default/css/ueditor.css';

import './themes/iframe.css'

增加

window.UE = baidu.editor = window.UE || {};

修改原来UE对象赋值结构

UE.plugins = {};

UE.commands = {};

UE.instants = {};

UE.I18N = {};

UE.I18N['zh-cn'] = I18N;

UE._customizeUI = {};

UE.version = "1.5.0";

底部增加导出语句

export default UE;

删除顶部(function(){}),记得后面配对的括号

1d3d630ca0e6

修改的几个注意点

修改ueditor.config.js

去除(function(){}),改为导出

export default UEDITOR_CONFIG;

修改zh-cn.js

同样采用模块导出方式,整体对象赋值给一个变量,导出变量即可

export default i18N;

1d3d630ca0e6

zh-cn.js文件

到这里几个文件的模块化方式就完成了,我这里是直接修改没有压缩的js,也是为了方便读代码,之后可以研究怎么压缩成min.js。

如果还有遗漏的地方,可以根据console的报错自行研究。

引入Loader

完成这里之后启动项目,前端报了很多css、png、gif引用相关的错误,后来查阅之后才知道需要引入这些loader,使react项目有处理这些文件的能力。

npm install --save-dev style-loader css-loader file-loader

//在webpack.config.js中增加如下规则:

{

test: /\.css$/,

use: [

{

loader: "style-loader"

}, {

loader: "css-loader"

}

]

},

{

test: /\.(png|jpg|gif)$/,

use: [

{

loader: 'file-loader',

options: {}

}

]

}

1d3d630ca0e6

webpack配置

结尾

基本上到这里之后就可以在react项目中直接import UE了,具体的使用可以查看EdmundChen的react+ueditor中的源码,也可以查看我写的那个项目,传送门,不确定之后会不会继续扩展和改进。



推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
author-avatar
wyzf88_987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有