Vue+Webpack完美整合富文本编辑器TinyMce的方法


Posted in Javascript onNovember 30, 2018

选择一个合适的富文本编辑器对于一个前端项目至关重要,这次我基于Vue来开发我项目中的前端部分,经过权衡选择了tinymce。其在UI,功能都很适合,tinymce官方文档:点击打开链接;

引入tinymce 我选用的版本4.7.4

npm install tinymce -S

将tinymce创建为Vue的组件,便于日后复用,创建组件editor.vue

<template>
    <textarea :id="id" :value="value"></textarea>
</template>
<script>
  // Import TinyMCE
  import tinymce from 'tinymce/tinymce';
  import 'tinymce/themes/modern/theme';
  import 'tinymce/plugins/paste';
  import 'tinymce/plugins/link';
  const INIT = 0;
  const CHANGED = 2;
  var EDITOR = null;
  export default {
    props: {
      value: {
        type: String,
        required: true
      },
      setting: {}
    },
    watch: {
      value: function (val) {
        console.log('init ' + val)
        if (this.status == INIT || tinymce.activeEditor.getContent() != val){
          tinymce.activeEditor.setContent(val);
        }
        this.status = CHANGED
      }
    },
    data: function () {
      return {
        status: INIT,
        id: 'editor-'+new Date().getMilliseconds(),
      }
    },
    methods: {
    },
    mounted: function () {
      const _this = this;
      const setting =
        {
          selector:'#'+_this.id,
          language:"zh_CN",
          init_instance_callback:function(editor) {
            EDITOR = editor;
            console.log("Editor: " + editor.id + " is now initialized.");
            editor.on('input change undo redo', () => {
              var content = editor.getContent()
              _this.$emit('input', content);
            });
          },
          plugins:[]
        };
      Object.assign(setting,_this.setting)
      tinymce.init(setting);
    },
    beforeDestroy: function () {
      tinymce.get(this.id).destroy();
    }
  }
  
</script>

在钩子mounted 进行了tinymce的初始化工作,调用 tinymce.init(setting),setting为配置信息这样我们便初步配置完成了editor组件

在其他页面使用组件

<template>
  <div class="app-container">
    <div>
      <!-- 组件有两个属性 value 传入内容双向绑定 setting传入配置信息 -->
      <editor class="editor" :value="content" :setting="editorSetting" @input="(content)=> content = content"></editor>
    </div>
 
  </div>
</template>
<script>
  import editor from '@/components/editor'
  export default {
    name: "editor-demo",
    data: function () {
      return {
        content:'我是富文本编辑器的内容',
        //tinymce的配置信息 参考官方文档 https://www.tinymce.com/docs/configure/integration-and-setup/
        editorSetting:{
          height:400,
        }
      }
    },
    components:{
      'editor':editor
    }
  }
</script>
<style scoped>
</style>

此刻我们已经完成了百分之90的配置 ,最后只需将node_modules/_tinymce@4.7.4@tinymce/文件夹下的skins文件夹放置于项目根目录下,这样tinymce才可获取皮肤css文件

下载并解压语言包langs文件夹放置项目根目录,中文下载链接 ,其他语言包选择;

之后在页面轻松使用组件

Vue+Webpack完美整合富文本编辑器TinyMce的方法

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

Javascript 相关文章推荐
js 居中漂浮广告
Mar 21 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
JS 有趣的eval优化输入验证实例代码
Sep 22 Javascript
jQuery使用经验小技巧(推荐)
May 31 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
jQuery基本过滤选择器用法示例
Sep 09 Javascript
Angular开发者指南之入门介绍
Mar 05 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
angularjs 缓存的使用详解
Mar 19 Javascript
前后端如何实现登录token拦截校验详解
Sep 03 Javascript
微信小程序实现卡片层叠滑动效果
Jun 21 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
jQuery实现网页拼图游戏
Apr 22 #jQuery
vue 双向数据绑定的实现学习之监听器的实现方法
Nov 30 #Javascript
基于jquery实现九宫格拼图小游戏
Nov 30 #jQuery
微信小程序canvas.drawImage完全显示图片问题的解决
Nov 30 #Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
Nov 30 #Javascript
微信小程序实现保存图片到相册功能
Nov 30 #Javascript
js canvas实现写字动画效果
Nov 30 #Javascript
You might like
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
Ajax执行顺序流程及回调问题分析
2012/12/10 Javascript
JavaScript执行顺序详细介绍
2013/12/04 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
VS2008中使用JavaScript调用WebServices
2014/12/18 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
python中count函数简单的实例讲解
2020/02/06 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Python使用sqlite3模块内置数据库
2020/05/07 Python
openCV提取图像中的矩形区域
2020/07/21 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
瀑布模型都有哪些优缺点
2014/06/23 面试题
党员承诺践诺书
2014/05/20 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫