node使用UEditor富文本编辑器的方法实例


Posted in Javascript onJuly 11, 2017

大部分编辑器的后台是基于java、php、asp等,很少有基于node.js的。今天就做一个基于node的

最近在做一个微信素材编辑器的小项目,使用到了UEditor编辑器,使用中出现了许多问题。

1.介绍

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码...

2.下载

下载地址 :https://3water.com/codes/45434.html

选择开发版 ,因为我们使用node ,所以随便下一个版本,这里下载1.4.3.3 jsp 版本

下载完成解压。

3.创建项目

使用express生成器生成一个项目,并安装好依赖模块

$express ue-test -ejs 
$cd ue-test && npm install

把刚刚压缩好的文件重命名为ueditor 放入ue-test/pubilc 中

修改index.ejs页面:

<!DOCTYPE html> 
<html> 
 <head> 
  <title><%= title %></title>  
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 
  <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.config.js"></script> 
  <script type="text/javascript" charset="utf-8" src="../ueditor/ueditor.all.min.js"> </script> 
  <!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败--> 
  <!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文--> 
  <script type="text/javascript" charset="utf-8" src="../ueditor/lang/zh-cn/zh-cn.js"></script> 
 </head> 
 <body> 
   <script id="editor" type="text/plain" style="width:1024px;height:500px;"></script> 
 </body> 
 
 
<script type="text/javascript"> 
 
  //实例化编辑器 
  //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 
  var ue = UE.getEditor('editor'); 
 
</script> 
</html>

然后启动项目,编辑器初始化成功!(注意引入文件路径的问题,如果初始化失败可以f12查看报错进行调试)

我们这里为什么要这样引入路径 可以看这里 (API)

node使用UEditor富文本编辑器的方法实例

4.后端配置

仅仅这样是不能进行上传的

我们需要要配置后端文件。

 修改 ueditor.config.js 文件

//找到这一行代码 修改成这样,这里的url为请求的路径 
// 服务器统一请求接口路径 
    ,serverUrl: URL + "ue"

接下来我们安装ueditor 模块

$npm install ueditor --save

ueditor模块有一个示例,照着修改就好了

修改app.js:

//加载ueditor 模块 
var ueditor = require("ueditor"); 
 
//使用模块 
app.use("/ueditor/ue", ueditor(path.join(__dirname, 'public'), function (req, res, next) { 
  // ueditor 客户发起上传图片请求 
  if (req.query.action === 'uploadimage') { 
    var foo = req.ueditor; 
 
    var imgname = req.ueditor.filename; 
 
    var img_url = '/images/ueditor/'; 
    res.ue_up(img_url); //你只要输入要保存的地址 。保存操作交给ueditor来做 
    res.setHeader('Content-Type', 'text/html');//IE8下载需要设置返回头尾text/html 不然json返回文件会被直接下载打开 
  } 
  // 客户端发起图片列表请求 
  else if (req.query.action === 'listimage') { 
    var dir_url = '/images/ueditor/'; 
    res.ue_list(dir_url); // 客户端会列出 dir_url 目录下的所有图片 
  } 
  // 客户端发起其它请求 
  else { 
    // console.log('config.json') 
    res.setHeader('Content-Type', 'application/json'); 
    res.redirect('/ueditor/jsp/config.json'); 
  } 
}));

修改完成重启一下服务就好了,

node使用UEditor富文本编辑器的方法实例

node使用UEditor富文本编辑器的方法实例

node使用UEditor富文本编辑器的方法实例

5.其他配置

自动保存

//启用自动保存 
,enableAutoSave: true 
//自动保存间隔时间, 单位ms 
,saveInterval: 500

发现这样启用自动保存没有成功,不知道为什么。

另一个方法是在实例编辑器之后调用

//实例化编辑器 
//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例 
var ue = UE.getEditor('editor'); 
 
//注意一定要延时。要等这玩意载入成功。 
setTimeout(function () { 
  ue.execCommand('drafts'); 
}, 500);

自动保存成功!!

取消自动保存

启用自动保存的时候会发现一直提示,是不是很烦,反正我是不能忍,怎么办呢?

node使用UEditor富文本编辑器的方法实例

设置一下自动保存间隔时间,把它设长一点就好了。

//启用自动保存 
 ,enableAutoSave: true 
 //自动保存间隔时间, 单位ms 
 ,saveInterval: 500 * 60 *60

这样烦人的自动保存提示就不会出来了。

只取消提示

上面我取消自动保存之后会发现使用起来不舒服,每次刷新页面,上次编辑的就没有了。

我们能不能只取消提示,而保留自动保存功能呢。

我在网上找了下,并没有发现。

那我们就自己写一个简单的保存吧。

我们可以使用html5的 localStorage 本地存储功能,当我们离开当前页面时候,把编辑器内容存储到本地,进入页面时候提取数据。上代码:

//实例化编辑器 
var ue = UE.getEditor('editor'); 
$(function() { 
  //初始化数据,读localstroage  
 var allData = {}; 
 if (localStorage.getItem('ueditor_content')!=null && localStorage.getItem('ueditor_content')!="") { 
    allData =  JSON.parse(localStorage.getItem('ueditor_content'));  
  }  
 
 //延时加载数据 要等编辑器加载成功,反正我不延时的时候没有成功。 
 setTimeout(function () { 
    ue.setContent (allData) 
 }, 500);  
 
 //离开页面或者刷新页面触发方法 
  window.onbeforeunload = function() { 
    localStorage.setItem("ueditor_content", JSON.stringify(ue.getContent())); 
  }  
 
})

6.添加音乐

添加音乐好坑啊,

node使用UEditor富文本编辑器的方法实例

这是什么鬼,我要的是这样的效果好么。

node使用UEditor富文本编辑器的方法实例

要不然你就这样也好

node使用UEditor富文本编辑器的方法实例

有会的老司机请指导指导!

7.解决图片过大超出编辑器

有时候图片宽度超出了编辑器的宽度,我们会想让他等比缩放

在配置里面找了下,没找到这个配置。不过编辑器提供了一个iframe.css让我们写自己的配置

node使用UEditor富文本编辑器的方法实例

我们可以在里面设置:

img { 
 max-width: 100%; /*图片自适应宽度*/ 
}

这样图片再怎么拉伸宽度都超不过边界。别看很简单,但是花了不少时间研究。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
Nov 07 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
详解JavaScript中的表单验证
Jun 16 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
JS获得多个同name 的input输入框的值的实现方法
Jan 09 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 18 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 #Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 #Javascript
JS自定义滚动条效果简单实现代码
Oct 27 #Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 #jQuery
微信小程序分页加载的实例代码
Jul 11 #Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 #Javascript
React入门教程之Hello World以及环境搭建详解
Jul 11 #Javascript
You might like
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
浅谈angularjs $http提交数据探索
2017/01/20 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
javascript创建元素和删除元素实例小结
2019/06/19 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
2020/07/11 Javascript
vue a标签点击实现赋值方式
2020/09/07 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
Python中的Descriptor描述符学习教程
2016/06/02 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
最新会计专业求职信范文
2014/01/28 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
丽江古城导游词
2015/02/03 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
责任书格式
2019/04/18 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
springcloud之Feign超时问题的解决
2021/06/24 Java/Android
MySQL主从切换的超详细步骤
2022/06/28 MySQL