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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
javascript实现原生ajax的几种方法介绍
Sep 21 Javascript
js的onload事件及初始化按钮事件示例代码
Sep 25 Javascript
Jquery解析json数据详解
Dec 26 Javascript
构造函数+原型模式构造js自定义对象(最通用)
May 12 Javascript
a标签的href与onclick事件的区别详解
Nov 12 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
简单理解JavaScript中的封装与继承特性
Mar 19 Javascript
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
Angular异步变同步处理方法
Aug 13 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
解决webpack dev-server不能匹配post请求的问题
2018/08/24 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
从零学Python之入门(二)基本数据类型
2014/05/25 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
非递归的输出1-N的全排列实例(推荐)
2017/04/11 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
廉政教育心得体会
2014/01/01 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
超市客服工作职责
2014/06/11 职场文书
倡导文明标语
2014/06/16 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
匿名检举信范文
2015/03/02 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
详解MySQL事务的隔离级别与MVCC
2021/04/22 MySQL
oracle重置序列从0开始递增1
2022/02/28 Oracle
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA