Vue.js结合Ueditor富文本编辑器的实例代码


Posted in Javascript onJuly 11, 2017

在前端开发的项目中。难免会遇到需要在页面上集成一个富文本编辑器。
前一段时间公司Vue.js项目需要使用UEditor富文本编辑器,在百度上搜索一圈没有发现详细的说明,决定自己尝试,忙活了一天终于搞定了。

1. 总体思路

1.1 模块化

vue的很大的一个优势在于模块化,我们可以通过模块化实现页面和逻辑的复用。所以可以把Ueditor重新封装成一个.vue的模板文件。其他组件通过引入这个模板实现代码复用。

1.2 数据传输

首先父组件需要设置编辑器的长度、宽度、初始文本,这些数据可以通过props来传递。编辑器中的文本变化可以通过vue自定义事件向父组件传递。

2. 具体实现步骤

2.1 引入关键的JS以及CSS文件

将以下文件全部拷贝到项目中

Vue.js结合Ueditor富文本编辑器的实例代码

2.2 配置Ueditor.config.js

首先配置URL参数,我们需要将这个路径指向刚才拷贝的文件的更目录,注意这里最好使用相对路劲。

var URL = window.UEDITOR_HOME_URL || '/static/ueditor/';

然后是默认宽度高度的设置

,initialFrameWidth:null // null表示宽度自动
,initialFrameHeight:320

其他功能的配置可以在官方文档查看

2.3 创建编辑器模板

我们需要在编辑器模板中import Ueditor核心JS库,并添加contentChange回调函数就大功告成了。

之所以使用import语法来引入核心JS库是因为这样更符合ES6模块化的规范,我看到网上有人建议在main.js中引入JS,但是过早地引入JS可能导致页面首次加载缓慢。

<template>
 <div ref="editor"></div>
</template>

<script>
 /* eslint-disable */
 import '../../../assets/js/ueditor/ueditor.config';
 import '../../../assets/js/ueditor/ueditor.all';
 import '../../../assets/js/ueditor/lang/zh-cn/zh-cn';

 import { generateRandonInteger } from '../../../vuex/utils';

 export default {
 data() {
  return {
  id: generateRandonInteger(100000) + 'ueditorId',
  };
 },
 props: {
  value: {
  type: String,
  default: null,
  },
  config: {
  type: Object,
  default: {},
  }
 },
 watch: {
  value: function value(val, oldVal) {
  this.editor = UE.getEditor(this.id, this.config);
  if (val !== null) {
   this.editor.setContent(val);
  }
  },
 },
 mounted() {
  this.$nextTick(function f1() {
  // 保证 this.$el 已经插入文档

  this.$refs.editor.id = this.id;
  this.editor = UE.getEditor(this.id, this.config);

  this.editor.ready(function f2() {
   this.editor.setContent(this.value);

   this.editor.addListener("contentChange", function () {
   const wordCount = this.editor.getContentLength(true);
   const content = this.editor.getContent();
   const plainTxt = this.editor.getPlainTxt();
   this.$emit('input', { wordCount: wordCount, content: content, plainTxt: plainTxt });
   }.bind(this));

   this.$emit('ready', this.editor);
  }.bind(this));
  });
 },
 };
</script>

<style>
 body{
  background-color:#ff0000;
 }
</style>

3. 编辑器的使用

使用编辑器模板的时候我需要通过props传入config以及初始文本value。

<template xmlns:v-on="http://www.w3.org/1999/xhtml">
 <div class="edit-area">
  <ueditor v-bind:value=defaultMsg v-bind:config=config v-on:input="input" v-on:ready="ready"></ueditor>
 </div>

</template>

<script>
 import ueditor from './ueditor.vue';

 export default {
 components: {
  ueditor,
 },
 data() {
  return {
  defaultMsg: '初始文本', 
  config: {
   initialFrameWidth: null,
   initialFrameHeight: 320,
  },
  };
 },
 };
</script>

如果需要让Ueditor上传图片的话,还需要在后台配置一个接口。这部分还没有时间研究,等过几天补上

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
类之Prototype.js学习
Jun 13 Javascript
Prototype使用指南之selector.js说明
Oct 26 Javascript
Mootools 1.2教程 类(一)
Sep 15 Javascript
JQuery获取各种宽度、高度(format函数)实例
Mar 04 Javascript
jQuery之日期选择器的深入解析
Jun 19 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
Dec 01 Javascript
Vue 动态组件components和v-once指令的实现
Aug 30 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
Dec 22 Javascript
vue项目创建步骤及路由router
Jan 14 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
Jul 11 #Javascript
JS自定义滚动条效果简单实现代码
Oct 27 #Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 #jQuery
微信小程序分页加载的实例代码
Jul 11 #Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
Jul 11 #Javascript
React入门教程之Hello World以及环境搭建详解
Jul 11 #Javascript
underscore之function_动力节点Java学院整理
Jul 11 #Javascript
You might like
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
PHP实现百度人脸识别
2019/05/06 PHP
phpfpm的作用和用法
2019/10/10 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
关于JQuery($.load)事件的用法和分析
2013/04/09 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
JavaScript实现url参数转成json形式
2016/09/25 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
轻松玩转BootstrapTable(后端使用SpringMVC+Hibernate)
2017/09/06 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
Servlet返回的数据js解析2种方法
2019/12/12 Javascript
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python模拟鼠标点击和键盘输入的操作
2019/08/04 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
全国税务系统先进集体事迹材料
2014/05/19 职场文书
群众路线教育实践活动心得体会(四风)
2014/11/03 职场文书
员工自我评价范文
2015/03/11 职场文书
欢送会主持词
2015/07/01 职场文书
教育读书笔记
2015/07/02 职场文书
vue+elementui 实现新增和修改共用一个弹框的完整代码
2021/06/08 Vue.js
PHP使用QR Code生成二维码实例
2021/07/07 PHP
SQL Server Agent 服务无法启动
2022/04/20 SQL Server