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 相关文章推荐
PNGHandler-借助JS让PNG图在IE下实现透明(包括背景图)
Aug 31 Javascript
js函数般调用正则
Apr 08 Javascript
百度留言本js 大家可以参考下
Oct 13 Javascript
Jquery AJAX 框架的使用方法
Nov 03 Javascript
jQuery点缩略图弹出层显示大图片
Feb 13 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
JavaScript变量基本使用方法实例分析
Nov 15 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 Javascript
JS实现鼠标按下拖拽效果
Jul 23 Javascript
使用compose函数优化代码提高可读性及扩展性
Jun 16 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实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
js闭包所用的场合以及优缺点分析
2015/06/22 Javascript
javascript html5移动端轻松实现文件上传
2020/03/27 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
几句话带你理解JS中的this、闭包、原型链
2016/09/26 Javascript
理解JavaScript原型链
2016/10/25 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
vue实现微信二次分享以及自定义分享的示例
2019/03/20 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
nuxt.js服务端渲染中axios和proxy代理的配置操作
2020/11/06 Javascript
Python中bisect的用法
2014/09/23 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
Django后台admin的使用详解
2019/07/08 Python
python计算n的阶乘的方法代码
2019/10/25 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
应届生体育教师自荐信
2013/10/03 职场文书
个人求职简历中英文自我评价
2013/12/16 职场文书
阳光体育活动方案
2014/02/16 职场文书
保研推荐信
2014/05/09 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
招商银行收入证明
2015/06/17 职场文书
三八节活动主持词
2015/07/04 职场文书