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

最近在做一个微信素材编辑器的小项目,使用到了UEditor编辑器,使用中出现了许多问题。
1.介绍
UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码...
2.下载
下载地址 :https://www./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)
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');
}
}));
修改完成重启一下服务就好了,
5.其他配置
自动保存
//启用自动保存 ,enableAutoSave: true //自动保存间隔时间, 单位ms ,saveInterval: 500
发现这样启用自动保存没有成功,不知道为什么。
另一个方法是在实例编辑器之后调用
//实例化编辑器
//建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
var ue = UE.getEditor('editor');
//注意一定要延时。要等这玩意载入成功。
setTimeout(function () {
ue.execCommand('drafts');
}, 500);
自动保存成功!!
取消自动保存
启用自动保存的时候会发现一直提示,是不是很烦,反正我是不能忍,怎么办呢?
设置一下自动保存间隔时间,把它设长一点就好了。
//启用自动保存 ,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.添加音乐
添加音乐好坑啊,
这是什么鬼,我要的是这样的效果好么。
要不然你就这样也好
有会的老司机请指导指导!
7.解决图片过大超出编辑器
有时候图片宽度超出了编辑器的宽度,我们会想让他等比缩放
在配置里面找了下,没找到这个配置。不过编辑器提供了一个iframe.css让我们写自己的配置
我们可以在里面设置:
img {
max-width: 100%; /*图片自适应宽度*/
}
这样图片再怎么拉伸宽度都超不过边界。别看很简单,但是花了不少时间研究。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# node
# 富文本编辑器
# nodejs
# nodejs后台集成ueditor富文本编辑器的实例
# 编辑器
# 自动保存
# 加载
# 的是
# 就能
# 你在
# 客户端
# 找了
# 就好了
# 自己的
# 后端
# 我是
# 直接调用
# 我要
# 是在
# 我在
# 我不
# 你就
# 让我们
# 研发部
相关文章:
定制建站方案优化指南:企业官网开发与建站费用解析
如何在IIS中新建站点并解决端口绑定冲突?
如何在云主机快速搭建网站站点?
建站之星2.7模板:企业网站建设与h5定制设计专题
建站之星CMS五站合一模板配置与SEO优化指南
如何快速生成ASP一键建站模板并优化安全性?
XML的“混合内容”是什么 怎么用DTD或XSD定义
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
Python路径拼接规范_跨平台处理说明【指导】
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
盐城做公司网站,江苏电子版退休证办理流程?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
定制建站价位费用解析与套餐推荐全攻略
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站之星微信建站一键生成小程序+多端营销系统
简单实现Android验证码
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
山东网站制作公司有哪些,山东大源集团官网?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
如何快速查询网址的建站时间与历史轨迹?
自助网站制作软件,个人如何自助建网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
建站之星如何修改网站生成路径?
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
小建面朝正北,A点实际方位是否存在偏差?
高防服务器:AI智能防御DDoS攻击与数据安全保障
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
南京网站制作费用,南京远驱官方网站?
相册网站制作软件,图片上的网址怎么复制?
企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?
长沙做网站要多少钱,长沙国安网络怎么样?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
网页设计网站制作软件,microsoft office哪个可以创建网页?
建站之星后台管理:高效配置与模板优化提升用户体验
如何快速搭建虚拟主机网站?新手必看指南
山东云建站价格为何差异显著?
家庭建站与云服务器建站,如何选择更优?
php json中文编码为null的解决办法
网页设计与网站制作内容,怎样注册网站?
营销式网站制作方案,销售哪个网站招聘效果最好?
表情包在线制作网站免费,表情包怎么弄?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
如何在IIS中新建站点并配置端口与IP地址?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
建站之星如何一键生成手机站?
*请认真填写需求信息,我们会在24小时内与您取得联系。