vue 项目中集成使用 tinymce 富文本编辑器实现图片上传

前言

最近因为公司项目的后台管理端需要实现编辑器功能, 一方面满足编辑各类文章内容需求,另一方面要自己编辑一些课程相关的介绍,于是就花了一些时间对比体验现有的一些开源的编辑器。

 

编辑器之间的简单比较

  • UEditor:基本满足各种需求,依赖于jquery但是已经不再维护了,实现上传图片等需要修改源码,界面不太美观,对于老浏览器兼容还不错,但是我这里采用的是VueJS来开发,所以放弃

  • wangEditor:比较轻量级,最最最重要的是有中文文档上手快,UI 也比较漂亮,而且还是国产的, 对于编辑器功能需求少的兄 die 可以考虑,但是考虑到我这项目业务比较重,所以只好放弃

  • Bootstrap-wysiwyg:简洁好看,依赖于Bootstrap, jquery,选择的Element-ui弃之

  • TinyMCE: 支持图片在线处理,插件多,功能强。 嗯,就选它啦(虽然文档是英文,但是谷歌翻译也不错 )

我们项目要解决的需求说复杂也不复杂,但是却很烦人, 比如:

1. 实现图片上传(基础功能)

2. 模拟手机预览功能(基础功能)

3. 编辑的内容在 app 中显示要适配

4. 从 135 编辑器, 秀米等等编辑器拷贝过来的内容要正常显示并且排版还要保持,还要将这些第三方图片上传到自己服务(怕第三方下架图片)

 

引入并初始化

  • 引入 tinymace 文件

项目采用 [email protected] 构建的, 将 TinyMCE 下载放在 index.html 同级目录下, 并在index.html中引入 TinyMCE

  • 初始化

引入文件后,在 html 元素上初始化 TinyMCE, 由于 TinyMCE 允许通过 CSS 选择器来标识可替换的元素,所以我们只需要将包含选择器的对象传递给 TinyMCE.init(),代码如下: