在Vue项目中集成TinyMCE富文本编辑器流程步骤

2023-06-01 00:00:00 文本 编辑器 步骤

TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器,下面是TinyMCE的Vue组件集成至你的项目中


安装vue-tinymce组件

npm i tinymce @packy-tang/vue-tinymce


全局引入

将node_modules下的tinymce目录复制到public中;

在public下的index.html中引入tinymce.min.js文件;

<script src="./tinymce/tinymce.min.js"></script>


在main.js全局注册组件

import VueTinymce from '@packy-tang/vue-tinymce'

Vue.use(VueTinymce)


自定义富文本编辑器组件

<template>
  <div>
    <vue-tinymce
      ref="tiny"
      :content="content"
      @change="getContent"
      :setting="setting"
      :setup="setup"
    ></vue-tinymce>
    <material ref="files" @select="setSelectFiles" />
  </div>
</template>
<script>
import material from '@/views/Material' //素材库
export default {
  props: ['content'], // 父件传来回显富文本数据
  components: {
    material
  },
  data () {
    return {
      setting: {
        max_height: 500,
        height: 500,
        statusbar: false, // 隐藏最下方的技术支持栏
        language_url: '/tinymce/langs/zh_CN.js', // 中文语言包
        language: 'zh_CN',
        fontsize_formats: '12px 14px 16px 18px 20px 24px 36px 48px',
        plugins: '', // 其他插件需要在这里注册才能在toolbar中使用
        toolbar: 'material'
      }
    }
  },
  methods: {
    setup (editor) {
      // 富文本自定义按钮 material
      const _this = this
      editor.ui.registry.addButton('material', {
        // text: '素材库',
        icon: 'material',
        tooltip: '素材库',
        onAction: function () {
          // 自定义按钮回调
          _this.$refs.files.theMaterial()
        }
      })
      // 自定义按钮图标
      editor.ui.registry.addIcon(
        'material',
        '<svg></svg>' //svg图标
      )
    },
    getContent (text) {
      // 给父组件传回富文本的内容
      this.$emit('text', text)
    },
    setSelectFiles (files) {
      // 选中的文件回调
      // 这里是我自己的素材库回调,如果需要自定义插入内容的可以调用
      // this.$refs.tiny.editor.insertContent()
      // insertContent() 方法是富文本编辑器内置的API,具体有哪些API可以查找下方的官方文档
      const str = '<img style="max-width:100%;" src="" />'
      this.$refs.tiny.editor.insertContent(str)
    }
  }
}
</script>


vue-tinymce组件手册

https://packy-tang.gitee.io/vue-tinymce/#/?id=vue-tinymce

TinyMCE中文文档

http://tinymce.ax-z.cn/

相关文章