携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情
富文本编辑器作为直接与用户交互的内容输入生产工具,是管理后台一个核心的功能,对大家的项目来说非常重要。面对众多的富文本编辑器,如何挑选适合自己需求的编辑器才是最重要的,下面就跟着小鹏鹏一起体验一番吧
TinyMCE
TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。
TinyMCE的优势:
- 开源可商用,基于LGPL2.1
- 插件丰富,自带插件基本涵盖日常所需功能(示例看下面的Demo-2)
- 接口丰富,可扩展性强,有能力可以无限拓展功能
- 界面好看,符合现代审美
- 提供经典、内联、沉浸无干扰三种模式(详见“介绍与入门”)
- 对标准支持优秀(自v5开始)
- 多语言支持,官网可下载几十种语言。
Github:github.com/tinymce
功能强大,支持拓展性,多语言平台的首选
Tinymce
核心代码
vue-element-admin已经封装好组件,可以直接使用
tinymce.init({
selector: '#tinydemo', //容器,可使用css选择器
language:'zh_CN', //调用放在langs文件夹内的语言包
toolbar: false, //隐藏工具栏
menubar: false, //隐藏菜单栏
inline: true, //开启内联模式
plugins: [ 'quickbars','link','table' ], //选择需加载的插件
//选中时出现的快捷工具,与插件有依赖关系
quickbars_selection_toolbar: 'bold italic forecolor | link blockquote quickimage',
});
效果图
tinymce-vue
tinymce 官方也在之前发布了 vue 版本的tinymce-vue,帮你封装好了很多东西,但同时也相对的减少了灵活性,有兴趣的可以自行研究一下。
Quill
Quill是一个跨平台、代码高亮好用的轻量级富文本编辑器
Quill的优势:
- 由于其 API 驱动的设计,无需像在其他文本编辑器中那样解析 HTML 或不同的 DOM 树;
- 跨平台和浏览器支持,快速轻便;
- 通过其模块和富有表现力的 API 完全可定制;
- 可以将内容表示为 JSON,更易于处理和转换为其他格式;
- 提供两个主题以快速轻松地更改编辑器的外观。
GitHub:github.com/quilljs/qui…
优缺点十分明显,代码高亮功能简直爽到爆,缺点是功能太少
核心代码
RuoYi已经封装好组件,可以直接使用
const editor = this.$refs.editor
this.Quill = new Quill(editor, this.options)
// 如果设置了上传地址则自定义图片上传事件
if (this.type === 'url') {
let toolbar = this.Quill.getModule('toolbar')
toolbar.addHandler('image', (value) => {
this.uploadType = 'image'
if (value) {
this.$refs.uploadImgRef.dialogVisible = true
} else {
this.quill.format('image', false)
}
})
}
this.Quill.pasteHTML(this.currentValue)
效果图
wangEditor
wangEditor是一个开箱即用,配置简单,开源的富文本编辑器
wangEditor的优势
- 开源
- 轻量简洁
- 中文文档齐全
- 不需要二次开发
- 支持vue和react组件
GitHub:github.com/wangeditor-…
核心代码
eladmin已经封装好组件,可以直接使用
const _this = this
var editor = new E(this.$refs.editor)
// 自定义菜单配置
editor.customConfig.zIndex = 10
// 文件上传
editor.customConfig.customUploadImg = function (files, insert) {
// files 是 input 中选中的文件列表
// insert 是获取图片 url 后,插入到编辑器的方法
files.forEach(image => {
upload(_this.imagesUploadApi, image).then(res => {
const data = res.data
const url = _this.baseApi + '/file/' + data.type + '/' + data.realName
insert(url)
})
})
}
editor.customConfig.onchange = (html) => {
this.editorContent = html
}
editor.create()
// 初始化数据
editor.txt.html(this.editorContent)
效果图
Tiptap
Tiptap 是一个基于 Vue 的无渲染的富文本编辑器,它基于 Prosemirror,完全可扩展且无渲染。可以轻松地将自定义节点添加为Vue组件
GitHub:github.com/ueberdosis/…
多人协作的利器
总结
- 配置
多语言功能首选TinyMCE - 文档要求
细腻,专业,首选TinyMCE 多平台同时使用首选Quill适用于不同的技术栈,又不想二次开发,并且支持多功能,选择wangEditor- 多人协作使用Tiptap