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

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

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

1.介绍

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

2.下载

下载地址 :http://www.jb51.net/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%; /*图片自适应宽度*/
}
  

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

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

(0)

相关推荐

  • nodejs后台集成ueditor富文本编辑器的实例

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码.. 1 下载ueditor nodejs版本 2 复制public目录下面的文件 到项目静态资源public文件夹下 3 在项目根目录创建ueditor文件夹 要复制进来的内容为 4 在根目录的 ueditor文件夹下执行 npm install 安装此目录下面package.json依赖的模块 5 项目根目录下创建 ue.js 代码部分来自于

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

    大部分编辑器的后台是基于java.php.asp等,很少有基于node.js的.今天就做一个基于node的 最近在做一个微信素材编辑器的小项目,使用到了UEditor编辑器,使用中出现了许多问题. 1.介绍 UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... 2.下载 下载地址 :http://www.jb51.net/codes/45434.html 选择开发版 ,因为我们使用node

  • Vue2.0中集成UEditor富文本编辑器的方法

    在vue的'项目中遇到了需要使用富文本编辑器的需求,在github上看了很多vue封装的editor插件,很多对图片上传和视频上传的支持并不是很好,最终还是决定使用UEditor. 这类的文章网上有很多,我进行了摸索.手写代码.汇总.排版,形成了这篇文章. 下载对应的UEditor源码 首先,去官网上下载UEditor的源码,根据你后台语言的不同下载对应的版本(PHP.Asp..Net.Jsp). http://ueditor.baidu.com/website/download.html 下载

  • vue2.x集成百度UEditor富文本编辑器的方法

    最近开发vue项目过程中,由于产品需要在项目中添加富文本编辑器,也在npm上找了几个基于vue开发的富文本编辑器,但是对兼容性比较高,不能兼容到IE9,10.所以最后决定使用百度UEditor.然后又是各种找如何集成到vue中.好记性不如烂笔头,记录下来以便以后需要的时候可以直接用. 1.首先下载UEditor源码,将整个文件放到static文件夹中 2.然后将UEditor集成到项目中去. 找到src/main.js,在main.js中 import '../static/ueditor/ue

  • PHP如何搭建百度Ueditor富文本编辑器

    本文为大家分享了PHP搭建百度Ueditor富文本编辑器的方法,供大家参考,具体内容如下 下载UEditor 官网:下载地址 将下载好的文件解压到thinkphp项目中,本文是解压到PUBLIC目录下并改文件夹名称为ueditor 第一步 引入javascript 在html中如入下面的js语句引入相关文件 <script type="text/javascript" charset="utf-8" src="__PUBLIC__/ueditor/u

  • vue中使用ueditor富文本编辑器

    最近在做后台管理系统的时候遇到要使用富文本编辑器.最后选择了ueditor,我的项目使用 vue+vuex+vue-router+webpack+elementUI的方案完成框架的搭建, 1.下载UEditor官网最新的jsp版本的包,下载完成解压之后得到一个utf8-jsp的文件夹,里面包含的内容如下: 2.将这个文件夹改名为ueditor,并且移入自己项目中的static文件夹下,修改ueditor.config.js文件夹中的内容,如下图: 3.编写子组件 <template> <

  • js获取UEditor富文本编辑器中的图片地址

    写之前在网上找了很多方法,最简单的思路应该是1.获取UEditor中的内容:2.将获取到的字符串转换成jquery对象:3.选择器找到img元素,获取src值. var content= UE.getEditor('details').getContent();//获取编辑器内容 var $div = document.createElement("div");//创建一个div元素对象 $div.innerHTML = content;//往div里填充html var $v = $

  • Vue.js结合Ueditor富文本编辑器的实例代码

    在前端开发的项目中.难免会遇到需要在页面上集成一个富文本编辑器. 前一段时间公司Vue.js项目需要使用UEditor富文本编辑器,在百度上搜索一圈没有发现详细的说明,决定自己尝试,忙活了一天终于搞定了. 1. 总体思路 1.1 模块化 vue的很大的一个优势在于模块化,我们可以通过模块化实现页面和逻辑的复用.所以可以把Ueditor重新封装成一个.vue的模板文件.其他组件通过引入这个模板实现代码复用. 1.2 数据传输 首先父组件需要设置编辑器的长度.宽度.初始文本,这些数据可以通过prop

  • YII中Ueditor富文本编辑器文件和图片上传的配置图文教程

    将Ueditor集成到YII框架中后,参照editor_config.js中的toolbars中的内容,更改options中标签可以给编辑器添加想要的功能: 因此要想添加文件和图片上传功能,应该加入以下两个标签: 文本编辑器中便出现了对应的两个选项: 但是点击上传图片按钮后发现,无法正常进行图片上传,文件上传也是失败的,问题都是Flash Player需要升级, 因此在火狐浏览器中安装对应的flash player组件,选择其中一个工作: 此时,文件上传和图片上传功能就能正常使用了: 上传路径的

  • 不到200行 JavaScript 代码实现富文本编辑器的方法

    前段时间在寻找一些关于富文本编辑器的资料,然后发现了这个名为 Pell 的项目,它是一个所见即所得(WYSIWYG)的文本编辑器,虽然它的功能很简单,但是令人吃惊的是它只有 1kb 大小.而项目最核心的文件 pell.js 只有130行,即使加上其它部分,总的 js 数量也不到200行.这引起了我的兴趣,决定看看它的源码是如何做到这一点的. 项目的主要代码在 pell.js文件中,其结构很简单,主要功能的实现依赖于以下的几个部分 actions 对象 exec() 函数 init() 函数 Do

  • iOS实现富文本编辑器的方法详解

    前言 富文本编辑器不同于文本编辑器,国内做的比较好的比如有百度的UEditor和kindEditor.但是这两个也有它的缺点:界面过于复杂.不够简洁.UI设计也比较落后.不够轻量化,这篇文章我们将给大家介绍利用iOS如何实现富文本编辑器. 实现的效果 解决思路 采用webview加载一个本地html文件,该html内部编写好js方法用于与oc相互调用 最终输出该富文本字符串传输给服务器 为什么选择这样的方式 服务端要求我最终返回的数据格式为: { @"Id":"当时新建模板这

随机推荐