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


Posted in Javascript onMarch 03, 2018

在vue的'项目中遇到了需要使用富文本编辑器的需求,在github上看了很多vue封装的editor插件,很多对图片上传和视频上传的支持并不是很好,最终还是决定使用UEditor。

这类的文章网上有很多,我进行了摸索、手写代码、汇总、排版,形成了这篇文章。

下载对应的UEditor源码

首先,去官网上下载UEditor的源码,根据你后台语言的不同下载对应的版本(PHP、Asp、.Net、Jsp)。

http://ueditor.baidu.com/website/download.html

下载之后,把资源放到 /static/ue/ 静态目录下。文档结构如下:

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

(我把UEditor放到了static静态目录下面,这里的文件不会被webpack打包,当然你也可以选择性地放进src中)

编辑 UEditor 编辑器 配置文件

我们打开 ueditor.config.js,修改其中的window.UEDITOR_HOME_UR配置,如下:

window.UEDITOR_HOME_URL = "/static/UE/";   //指定编辑器资源文件根目录
var URL = window.UEDITOR_HOME_URL || getUEBasePath();
ueditor.config.js文件有很多配置,可以在这里进行一些初始化的全局配置,比如编辑器的默认宽高等:
,initialFrameWidth:1000 //初始化编辑器宽度,默认1000
,initialFrameHeight:320 //初始化编辑器高度,默认320
其他的参数配置,在该文件中有详细列出,或者参考官方文档 http://fex.baidu.com/ueditor/

将编辑器集成到系统中

打开 /src/main.js 文件,插入下面的代码:

//ueditor
import '../static/UE/ueditor.config.js'
import '../static/UE/ueditor.all.min.js'
import '../static/UE/lang/zh-cn/zh-cn.js'
import '../static/UE/ueditor.parse.min.js'

开发公共组件 UE.vue

我们在 /src/components/ 目录下创建 UE.vue文件,作为我们的编辑器组件文件。

下面代码提供简单功能,具体使用根据需求完善该组件即可。

<template>
  <div>
    <script type="text/plain"></script>
  </div>
</template>
<script>
  export default {
    name: 'ue',
    data () {
      return {
        editor: null
      }
    },
    props: {
      value: '',
      config: {}
    },
    mounted () {
      this.editor = window.UE.getEditor('editor', this.config);
      this.editor.addListener('ready', () => {
        this.editor.setContent(this.value)
      })
    },
    methods: {
      getUEContent () {
        return this.editor.getContent()
      }
    },
    destroyed () {
      this.editor.destroy()
    }
  }
</script>

组件暴露了两个接口:

  • value是编辑器的文字
  • config是编辑器的配置参数

在其他页面中使用该组件

简单地创建一个需要UEditor的页面,再该页面中使用刚才封装好的UE.vue组件:

<template>
  <div>
    <Uediter :value="ueditor.value" :config="ueditor.config" ref="ue"></Uediter>
    <button @click="returnContent">显示编辑器内容</el-button>
    <div>{{dat.content}}</div>
  </div>
</template>
<script>
  import Uediter from '@/components/UE.vue';

  export default {
    data () {
      return {
        dat: {
          content: ''
        },
        ueditor: {
          value: '编辑器默认文字',
          config: {
            initialFrameWidth: 800,
            initialFrameHeight: 320
          }
        }
      }
    },
    methods: {
      returnContent () {
        this.dat.content = this.$refs.ue.getUEContent()
      }
    },
    components: {
      Uediter
    },
  }
</script>

效果如下:

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

What's more: 服务端需要做的配置

配置完上述内容后,控制台可能会出现"后台配置项返回格式出错,上传功能将不能正常使用!"的报错,
我们在编辑器中上传图片或者视频,也会出现响应的报错,这是因为没有配置服务器的请求接口,在ueditor.config.js中,对serverUrl进行配置:

// 服务器统一请求接口路径
, serverUrl: 'http://172.16.254.49:83/File/UEditor'  //地址管你们后端要去
Javascript 相关文章推荐
js身份证验证超强脚本
Oct 26 Javascript
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
Jul 06 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
Dec 19 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
jquery表单对象属性过滤选择器实例分析
May 18 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
javascript数组去重方法分析
Dec 15 Javascript
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 Javascript
js之ajax文件上传
May 13 Javascript
js操作二进制数据方法
Mar 03 #Javascript
vue2.0使用swiper组件实现轮播的示例代码
Mar 03 #Javascript
Vue的轮播图组件实现方法
Mar 03 #Javascript
在Vue中使用Compass的方法
Mar 02 #Javascript
AjaxUpLoad.js实现文件上传功能
Mar 02 #Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 #Javascript
解决vue 更改计算属性后select选中值不更改的问题
Mar 02 #Javascript
You might like
php 获取可变函数参数的函数
2009/08/26 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
javascript 精粹笔记
2010/05/09 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
python实现学生信息管理系统
2020/04/05 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python getpass实现密文实例详解
2019/09/24 Python
Django 批量插入数据的实现方法
2020/01/12 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
班组长安全职责
2014/01/05 职场文书
职业生涯规划书范文
2014/03/10 职场文书
诚信考试倡议书
2014/04/15 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
导游词之镇江焦山
2019/11/21 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python
详解运行Python的神器Jupyter Notebook
2021/06/03 Python