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 27 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
jquery实现tr元素的上下移动示例代码
Dec 20 Javascript
js数组循环遍历数组内所有元素的方法
Jan 18 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
node.js中的console用法总结
Dec 15 Javascript
jQuery中toggle()函数的使用实例
Apr 17 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
vue组件实现可搜索下拉框扩展
Oct 23 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
如何在Vue中抽离接口配置文件
Oct 31 Javascript
Vue中多元素过渡特效的解决方案
Feb 05 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维护文件系统
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
Gird事件机制初级读本
2007/03/10 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
webpack+vue.js实现组件化详解
2016/10/12 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
利用python修改json文件的value方法
2018/12/31 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
python上selenium的弹框操作实现
2020/07/13 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
自荐信怎么写呢?
2013/12/09 职场文书
运动会广播稿200字
2014/01/15 职场文书
网上开店必备创业计划书
2014/01/26 职场文书
函授自我鉴定范文
2014/02/06 职场文书
汽车维修求职信
2014/06/15 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
总结一下关于在Java8中使用stream流踩过的一些坑
2021/06/24 Java/Android
DQL数据查询语句使用示例
2022/12/24 MySQL