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 相关文章推荐
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
Apr 17 Javascript
分享一则javascript 调试技巧
Jan 02 Javascript
Javascript实现计算个人所得税
May 10 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
你不知道的 javascript【推荐】
Jan 08 Javascript
angular+ionic返回上一页并刷新页面
Aug 08 Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 Javascript
vue父子组件通信的高级用法示例
Aug 29 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 什么是PEAR?(第三篇)
2009/03/19 PHP
PHP通用检测函数集合
2011/02/08 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
JS画线(实例代码)
2013/11/20 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
JavaScript字符串对象
2017/01/14 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
2019/02/22 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
python查找目录下指定扩展名的文件实例
2015/04/01 Python
用Python进行TCP网络编程的教程
2015/04/29 Python
python实现音乐下载器
2018/04/15 Python
python多行字符串拼接使用小括号的方法
2020/03/19 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
浅析图片上传及canvas压缩的流程
2020/06/10 HTML / CSS
PHP如何防止SQL注入
2014/05/03 面试题
揭牌仪式主持词
2014/03/19 职场文书
保护动物的标语
2014/06/11 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
材料化学专业求职信
2014/07/15 职场文书
简易离婚协议书范本2014
2014/10/15 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书