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 相关文章推荐
javascript ie6兼容position:fixed实现思路
Apr 01 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
JavaScript中创建对象和继承示例解读
Feb 12 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
May 10 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 Javascript
利用原生JS与jQuery实现数字线性变化的动画
Feb 24 Javascript
JavaScript运动框架 多值运动(四)
May 18 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
Sep 05 Javascript
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
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代码
2008/09/10 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
php中使用websocket详解
2016/09/23 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
jQuery页面元素动态添加后绑定事件丢失方法,非 live
2016/06/16 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
2020/05/25 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
Python多线程编程(一):threading模块综述
2015/04/05 Python
实例说明Python中比较运算符的使用
2015/05/13 Python
python中logging库的使用总结
2017/10/18 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
Python列表解析操作实例总结
2020/02/26 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
html5画布旋转效果示例
2014/01/27 HTML / CSS
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
IBatis持久层技术
2016/07/18 面试题
2015年健康教育工作总结
2015/04/10 职场文书
导游词之西安骊山
2019/12/20 职场文书