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自定义的函数
Aug 05 Javascript
可以文本显示的公告栏的js代码
Mar 11 Javascript
使用jquery动态加载javascript以减少服务器压力
Oct 29 Javascript
javascript 保存文件到本地实现方法
Nov 29 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
详解iframe与frame的区别
Jan 13 Javascript
Jquery判断form表单数据是否变化
Mar 30 Javascript
JS实现关闭当前页而不弹出提示框的方法
Jun 22 Javascript
详解node-ccap模块生成captcha验证码
Jul 01 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 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写的求多项式导数的函数代码
2012/07/04 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
laravel入门知识点整理
2020/09/15 PHP
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
使用JS获取SessionStorage的值
2018/01/12 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
深入学习Python中的装饰器使用
2016/06/20 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python爬虫自动化爬取b站实时弹幕实例方法
2021/01/26 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
消防安全管理制度
2014/02/01 职场文书
岗位职责风险防控
2014/02/18 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
创先争优演讲稿
2014/09/15 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
民事调解协议书
2016/03/21 职场文书
车辆挂靠协议书
2016/03/23 职场文书
2016年少先队活动总结
2016/04/06 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript