vue-cli -- Tinymce富文本编辑器挖坑

官方文档

参考文献

一、安装Tinymce

// 首先安装tinymce的vue组件,因为没有注册服务
npm install @tinymce/tinymce-vue -S

// 接着安装tinymce
npm install tinymce -S

或者在package.json文件中配置

"@tinymce/tinymce-vue": "^2.0.0",
"tinymce": "^5.0.3",

二、安装语言包

正常情况下,tinymce是英文的,所以需要下载中文包

中文语言包下载

三、配置文件

将下好的中文包和tinymce中的skins文件一起拷贝复制到public中的tinymce中

四、引入tinymce

在使用页面引入tinymce

import tinymce from 'tinymce/tinymce'
import Editor from '@tinymce/tinymce-vue'
import 'tinymce/themes/silver'

Tips 这是个组件,需要在components中注册后才能使用

<editor ></editor>

init初始化配置

init: {
    language_url: '/tinymce/langs/zh_CN.js',// 语言包的路径
    language: 'zh_CN',//语言
    skin_url: '/tinymce/skins/ui/oxide',// skin路径,注意这个,很多网上教程都是skins/lightgray,但是发现其实并没有这个玩意儿
    height: 300,//编辑器高度
    branding: false,//是否禁用“Powered by TinyMCE”
    menubar: false,//顶部菜单栏显示
}

拓展插件

刚创建的编辑器是非常简陋的,很多功能需要引入插件,并在初始化中配置plugins,并在toolbar上面配置对应按钮

import 'tinymce/plugins/image'// 插入上传图片插件
import 'tinymce/plugins/media'// 插入视频插件
import 'tinymce/plugins/table'// 插入表格插件
import 'tinymce/plugins/lists'// 列表插件
import 'tinymce/plugins/wordcount'// 字数统计插件

init: {
    plugins: 'lists image media table wordcount',
    toolbar: 'undo redo |  formatselect | bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | lists image media table | removeformat',
}

五、初始化tinymce

在mounted钩子函数里初始化

tinymce.init({})

正常图片没有上传功能,需要在init里面添加上传图片方法

init: {
    // 这个是base64方法处理后的
    images_upload_handler: (blobInfo, success, failure) => {
        const img = "data:image/jpeg;base64," + blobInfo.base64();
        success(img);
   }
}

字数统计好像只对中文和标点符号有效果,输入英文字母好像不管输入多少都会统计成1个

六、常规编辑器

UEditor

wangEditor

Quill

CKeditor

kingEditor

mediumEditor

trix

bootStrap