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 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
JS 进度条效果实现代码整理
May 21 Javascript
setTimeout和setInterval的深入理解
Nov 08 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
JS实现带提示的星级评分效果完整实例
Oct 30 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
Apr 01 Javascript
JavaScript闭包实例详解
Jun 03 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
webpack热模块替换(HMR)/热更新的方法
Apr 05 Javascript
利用hasOwnProperty给数组去重的面试题分享
Nov 05 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 无限极分类
2008/03/27 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
php use和include区别总结
2019/10/13 PHP
详解Javascript动态操作CSS
2014/12/08 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
详解参数传递四种形式
2015/07/21 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
浅析python协程相关概念
2018/01/20 Python
python3实现名片管理系统
2020/11/29 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
Keras构建神经网络踩坑(解决model.predict预测值全为0.0的问题)
2020/07/07 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
探索欧洲最好的品牌:Bombinate
2019/06/14 全球购物
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
武汉瑞得软件笔试题
2015/10/27 面试题
商场总经理岗位职责
2014/02/03 职场文书
交通安全标语
2014/06/06 职场文书
收入证明范本
2015/06/12 职场文书
超市员工管理制度
2015/08/06 职场文书
新学期感想
2015/08/10 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android