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控制frame,iframe的src属性代码
Dec 31 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
Dec 18 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
vue插件tab选项卡使用小结
Oct 27 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
js输入框使用正则表达式校验输入内容的实例
Feb 12 Javascript
angular中实现li或者某个元素点击变色的两种方法
Jul 27 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
Vue中Quill富文本编辑器的使用教程
Sep 21 Javascript
vue-week-picker实现支持按周切换的日历
Jun 26 Javascript
记一次vue跨域的解决
Oct 21 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中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
解析用PHP实现var_export的详细介绍
2013/06/20 PHP
php中simplexml_load_string使用实例分享
2014/02/13 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
jquery解决图片路径不存在执行替换路径
2013/02/06 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
jQuery实现百度登录框的动态切换效果
2017/04/21 jQuery
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
2019/04/02 Javascript
python操作ie登陆土豆网的方法
2015/05/09 Python
python2.7读取文件夹下所有文件名称及内容的方法
2018/02/24 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
python中re模块知识点总结
2021/01/17 Python
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
安全承诺书格式
2014/05/21 职场文书
老公保证书怎么写
2015/02/26 职场文书
聘任证明怎么写
2015/03/02 职场文书
个人道歉信大全
2019/04/11 职场文书
小学作文之描写天气
2019/08/15 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
gateway网关接口请求的校验方式
2021/07/15 Java/Android