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 相关文章推荐
javascript cookies 设置、读取、删除实例代码
Apr 12 Javascript
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
javascript使用avalon绑定实现checkbox全选
May 06 Javascript
jQuery实现的文字hover颜色渐变效果实例
Feb 20 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
Jan 18 jQuery
JS script脚本中async和defer区别详解
Jun 24 Javascript
js实现简易拖拽的示例
Oct 26 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
一行命令搞定node.js 版本升级
2014/07/20 Javascript
js实现下拉框选择要显示图片的方法
2015/02/16 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
Js利用prototype自定义数组方法示例
2017/10/20 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Django中几种重定向方法
2015/04/28 Python
Python使用chardet判断字符编码
2015/05/09 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
Python闭包思想与用法浅析
2018/12/27 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
法院实习人员自我鉴定
2013/09/26 职场文书
大专自我鉴定范文
2013/10/23 职场文书
大学生自我鉴定
2013/12/16 职场文书
2014三八妇女节活动总结
2014/03/01 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
保安公司服务承诺书
2014/05/28 职场文书
学习张林森心得体会
2014/09/10 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers