Node.js集成UEditor富文本编辑器的完整指南

作者:接口漫谈

时间:2026-10-22

浏览:358

本文详细介绍如何在Node.js项目中集成百度UEditor富文本编辑器。内容涵盖从下载解压、Express项目搭建、前端引入配置,到后端接口对接及上传功能实现的完整流程。此外,还深入讲解了自动保存功能的启用与优化、本地存储替代方案以及图片自适应宽度的CSS处理技巧,解决实际开发中常见的配置难题。

文章目录

Node.js集成UEditor概述

大多数后台编辑器基于Java、PHP或ASP等技术栈,基于Node.js的相对较少。本文将演示如何构建一个基于Node.js的解决方案。

近期在进行微信素材编辑器项目开发时,集成了UEditor编辑器,过程中遇到并解决了一系列问题。

1. 简介

UEditor由百度Web前端研发部开发,是一款所见即所得的富文本Web编辑器。它具备轻量级、可定制性强及注重用户体验等特点,基于MIT协议开源,允许自由使用和修改代码。

下载与项目初始化

2. 下载资源

下载地址:https://www.jb51.net/codes/45434.html

请选择开发版。由于本项目使用Node.js,版本选择较为灵活,此处以下载1.4.3.3 jsp版本为例。

下载完成后进行解压处理。

3. 创建项目

使用Express生成器创建一个新项目,并安装所需依赖模块。


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

将刚才解压的文件夹重命名为ueditor,并放入项目目录ue-test/public中。

修改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.js集成UEditor概述

后端接口配置

4. 后端配置

仅完成前端配置无法实现文件上传功能。

我们需要对后端文件进行相应配置。

修改ueditor.config.js配置文件。


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

接下来安装ueditor Node.js模块。


$npm install ueditor --save 

该模块提供了一个示例,参照示例进行修改即可。

修改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.js集成UEditor概述

Node.js集成UEditor概述

Node.js集成UEditor概述

自动保存与本地存储优化

5. 其他配置

自动保存功能


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

直接启用自动保存似乎未生效,具体原因尚不明确。

另一种方法是在实例化编辑器后调用相关命令。


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

此时自动保存功能已成功启用。

取消自动保存提示

启用自动保存时会频繁弹出提示,体验不佳。如何消除这些烦人的提示?

Node.js集成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.js集成UEditor概述

默认显示效果可能不符合预期。

Node.js集成UEditor概述

或者采用另一种显示方式。

Node.js集成UEditor概述

如有经验者,欢迎指导。

7. 解决图片过大超出编辑器边界问题

当图片宽度超出编辑器范围时,通常希望其等比缩放以适应容器。

在配置文件中未找到直接相关配置,但编辑器提供了iframe.css供自定义样式。

Node.js集成UEditor概述

可在其中设置以下CSS规则:


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

这样即可确保图片宽度不超过边界。虽然实现简单,但研究过程耗时不少。

以上为本文全部内容,希望对各位的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章