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 相关文章推荐
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
AngularJS基础学习笔记之简单介绍
May 10 Javascript
jquery实现模拟百分比进度条渐变效果代码
Oct 29 Javascript
js实现文字选中分享功能
Jan 25 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
Dec 11 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
详解JavaScript中的函数、对象
Apr 01 Javascript
浅谈Node 异步IO和事件循环
May 05 Javascript
JavaScript Image对象实现原理实例解析
Aug 26 Javascript
JS前端轻量fabric.js系列之画布初始化
Aug 05 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
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
完美的php分页类
2017/10/24 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
在js代码拼接dom对象到页面上的模板总结
2018/10/21 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python 调用Java实例详解
2017/06/02 Python
Python实现的弹球小游戏示例
2017/08/01 Python
django初始化数据库的实例
2018/05/27 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
工程开工庆典邀请函
2014/02/01 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
真诚的求职信
2014/07/04 职场文书
护士医德医风自我评价
2014/09/15 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
商品陈列协议书
2014/09/29 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
甲午大海战观后感
2015/06/02 职场文书
十二生肖观后感
2015/06/12 职场文书
Python天气语音播报小助手
2021/09/25 Python
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript