在 Vue 脚手架中 Tinymce 富文本编辑器

废话不多说,直接开始

1.下载依赖:

​ 下载 tinymcetinymce-vue

npm i tinymce tinymce-vue -S

2.复制内容和样式包

  1. node_modules 文件夹中找到 tinymce/skins 文件,复制到 **public/tinymce **文件夹下
    图1

  2. 下载 中文包 解压后 复制到 tinymce/langs 文件中

    中文包 https://www.tiny.cloud/get-tiny/language-packages/

    图2 下载文件

3.创建 tinymce-editor 组件

<template>
  <div>
    <editor v-model="content"
            :init="init"
            :disabled="disabled"
            @onClick="onClick">
    </editor>
  </div>
</template>
<script>
import tinymce from 'tinymce/tinymce'
import Editor from '@tinymce/tinymce-vue'
import 'tinymce/themes/silver'
//  插件
import 'tinymce/plugins/image' // 上传图片插件
import 'tinymce/plugins/media' // 视频插件
import 'tinymce/plugins/table' // 表格插件
import 'tinymce/plugins/lists' // 列表插件
import 'tinymce/plugins/wordcount' // 字数统计插件
export default {
  components: {
    Editor
  },
  props: {
    value: {
      type: String,
      default: ''
    },
    disabled: {
      type: Boolean,
      default: false
    },
    plugins: {
      type: [String, Array],
      default: 'lists image media table wordcount'
    },
    toolbar: {
      type: [String, Array],
      default: 'undo redo |  formatselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat'
    }
  },
  data () {
    return {
      init: {
        language_url: '/tinymce/langs/zh_CN.js', // 中文包路径
        language: 'zh_CN', // 中文包名称
        skin_url: '/tinymce/skins/ui/oxide', // 默认白色
        // skin_url: '/tinymce/skins/ui/oxide-dark', // 暗色
        height: 600, // 设置高度
        // width: 150, // 设置宽度
        plugins: this.plugins,
        toolbar: this.toolbar,
        branding: false,
        menubar: false,
        // 此处为图片上传处理函数,用了base64的图片上传格式,具体可以参考文档
        images_upload_handler: (blobInfo, success, failure) => {
          const img = 'data:image/jpeg;base64,' + blobInfo.base64()
          success(img)
        }
      },
     content: this.content
    }
  },
  mounted () {
    tinymce.init({})
  },
  methods: {
    // 添加相关的事件
    onClick (e) {
      this.$emit('onClick', e, tinymce)
    },
    // 可以添加一些自己的自定义事件,如清空内容
    clearContent () {
      this.content = ''
    }
  }
}
</script>

更多的插件可以参考:https://www.tiny.cloud/docs/plugins/
更多事件参照文档: https://github.com/tinymce/tinymce-vue (找All available events)

4.在需要的页面中引入

<template>
  <div class="tinymce">
    <tinymce-editor></tinymce-editor>
  </div>
</template>

<script>
import TinymceEditor from '@/components/tinymce-editor'

export default {
  components: {
    TinymceEditor
  }
}
</script>

5.大功告成

在这里插入图片描述

Logo

前往低代码交流专区

更多推荐