项目中的富文本编辑器该如何选择?

项目中经常需要用到富文本编辑器的时候,而常见的富文本编辑器都有哪些?该如何选择?

先看看市面上都有哪些可用的富文本编辑器:

  • TinyMCE(插件式的,支持 VueReactAngular 框架)
  • wangEditor(Typescript 开发的 Web 富文本编辑器, 轻量、简洁、易用、开源免费,支持 JS 直接引入使用,或者 Vue2/3React
  • UEditor(开源,插件多,功能齐全,支持 JS 直接引入使用)
  • CKEditor(模块化的简洁强大,丰富的框架支持,支持 VueReactAngularJqueryElectron 框架)
  • Quill-editor(轻量、简洁,支持 JS 直接引入使用,VueAngularReact

由于项目中有一条必不可少的需求是可直接复制 Excel 中内容和格式到编辑器中,分别研究了以上等编辑器,只有TinyMCE支持的比较好,因为它是插件式的,powerpaste 很少地做到了这一点。

然而问题又来了,我们开发喜欢使用开源免费的,这个插件是收费的功能。也就是说 TinyMCE 是半开源的,基础功能是免费的,而涉及到复杂功能则需要收费。

正常的收费肯定就有破解的,或者网友共享出来的。通过搜索我们找到了一个低版本的 powerpaste 的插件 4.8.2,以下就来介绍下使用过程。

安装依赖包

Vue 项目中使用,需要安装以下包文件

"dependencies": {"@tinymce/tinymce-vue": "3.2.8","tinymce": "4.8.2",}

封装组件

然后我们封装一个组件,在组件中引入该富文本组件,向外暴露参数可灵活使用。

模板代码,只提供初始化 init 参数

<template><div class="tinymce-box"><editorv-model="myValue"ref="edit":init="init"></editor></div>
</template>

然后引入 tinymcetinymce-vue 两个包文件,和主题文件

<script>import tinymce from 'tinymce/tinymce' //tinymce默认hidden,不引入不显示import Editor from '@tinymce/tinymce-vue'import 'tinymce/themes/modern'
</script>

配置参数

data 里针对 init 配置参数进行设置

export default {components: { Editor },data() {return {myValue: '',init: {menubar: false,height: 400,skin_url: '/tinymce/skins/lightgray',plugins: 'code colorpicker image link lists preview table',external_plugins: {'powerpaste': '/tinymce/plugins/powerpaste/plugin.js'}}}},mounted() {tinymce.init({})}
}

menubar 是控制菜单栏显示的,主要的功能是通过 plugins 属性配置的,里面是字符串通过空格隔开。这里的 external_plugins 属性是拓展插件需要的,不仅支持官方的插件,还支持自己独立开发的功能。

引入拓展插件

由于通过 npm 安装是没有 powerpaste 插件的,我们可以下载了放在 public 目录下,通过 external_plugins 来配置使用。

最后

验证效果,我们从左侧这样的一个 Excel 文件中把表格复制出来,黏贴到富文本编辑器中

会弹出提示,需不需要附带格式一起,于是我们选择保持格式。

整个代码如下:

<template><div class="tinymce-box"><editor v-model="myValue"ref="edit":init="init"></editor></div>
</template><script>import tinymce from 'tinymce/tinymce' //tinymce默认hidden,不引入不显示import Editor from '@tinymce/tinymce-vue'import 'tinymce/themes/modern'// 更多插件参考:https://www.tiny.cloud/docs/plugins/import 'tinymce/plugins/image'// 插入上传图片插件import 'tinymce/plugins/media'// 插入视频插件import 'tinymce/plugins/table'// 插入表格插件import "tinymce/plugins/link";import "tinymce/plugins/code";import 'tinymce/plugins/lists'// 列表插件import 'tinymce/plugins/wordcount'// 字数统计插件import "tinymce/plugins/colorpicker";import "tinymce/plugins/textcolor";import "tinymce/plugins/contextmenu";import "tinymce/plugins/preview"import "tinymce/plugins/hr"export default {components: { Editor },data() {return {myValue: '',init: {menubar: false,height: 400,skin_url: '/tinymce/skins/lightgray',toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | help',plugins: 'code colorpicker image link lists preview table',external_plugins: {'powerpaste': '/tinymce/plugins/powerpaste/plugin.js'}}}},mounted() { // 这个是必要的,初始化的时候需要给init 一个空对象,不然报错tinymce.init({})}}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据自己的博客数据统计国内IT人群

装上百度统计有一段时间了&#xff0c;今天突然找出报表看看&#xff0c;发现一个很有意思的事情。访问来源TOP5依次是&#xff1a;北京&#xff0c;上海&#xff0c;深圳&#xff0c;杭州&#xff0c;广州 虽然大部分文章都是当时特别白的时候记录下来的遇到过的问题&#xff…

程序员的工作周报该怎么写?

大多数公司都有写周报的要求&#xff0c;为什么要写周报&#xff1f;很多流于形式的周报&#xff0c;会让员工感到厌烦。特别是程序员&#xff0c;你让他写代码可以&#xff0c;写这种篇幅稍微大点的文字&#xff0c;简直要了他的命。周报作为一种文字载体&#xff0c;是下级向…

一个快速生成元素背景的 React 组件

在开发过程中&#xff0c;我们经常会遇到使用背景的地方&#xff0c;比如登录页面&#xff0c;用户信息页面&#xff0c;封面图…… 寻找契合业务主题的背景十分耗费精力&#xff0c;总觉得做的背景不合适&#xff0c;如果直接用图片呢&#xff0c;逻辑是比较简单&#xff0c;但…

python之路_前端基础之Bootstrap 组件

文档内容参考地址&#xff1a;http://v3.bootcss.com/components/ 一、图标 如下例&#xff0c;Star文本前有一个空格&#xff1a; <button type"button" class"btn btn-default btn-lg"><span class"glyphicon glyphicon-star" aria-h…

Java核心技术 卷1 多线程----线程安全的集合(4)

如果多线程要并发的修改一个数据结构&#xff0c;例如散列表&#xff0c;那么很容易会破坏这个数据结构。一个线程可能要开始向表中插入一个新元素。假定在调整散列表各个桶之间的链接关系的过程中&#xff0c;被剥夺了控制权。如果另一个线程也开始遍历同一个链表&#xff0c;…

如何快速实现 Wordpress 博客域名更换?

如题&#xff0c;如何快速更换使用 Wordpress 搭建的网站、博客的域名&#xff0c;除了在域名服务商那更换域名的解析和 web服务器端的配置外&#xff0c;还应该从数据库端做些什么&#xff1f;熟悉 Wordpress 的用户都知道在 Wordpress 后台&#xff0c;设置 --> 常规 里有…

浮动—春联(文字竖直排列)

<div id"main"><div class"top">李白</div><div class"left">明月几时有</div><div class"right">把酒问青天</div> </div> 1 #main{2 height: 540px;3 …

了解下广告计费模式CPC、CPA和CPM

目前各大广告平台最常见的广告计费模式分别有CPC、CPA、CPM。例如知乎、头条、百度、腾讯等各类平台投放广告&#xff0c;基本都离不开这几种广告计费方式。由于博客流量日渐见好&#xff0c;最近也申请了谷歌的广告的流量主&#xff0c;所以有必要了解下这几种广告模式&#x…

JUnit 5 –设置

2015年11月&#xff0c; JUnit Lambda团队展示了他们的原型 。 此后&#xff0c;该项目更名为JUnit 5&#xff0c;并于2016年2月发布了Alpha版本。我们将在一系列简短文章中对其进行探讨&#xff1a; 设定 基本 建筑 条件 注射 … 本章讨论JUnit 5的设置&#xff0c;以便…

如何在 VS Code 中创建自己的代码片段

在项目开发中&#xff0c;我们经常需要新建文件&#xff0c;而这些初始化这些文件又需要敲出很多相同的代码&#xff0c;比如我们新建一个 .vue 的文件&#xff0c;需要我们在写正式的功能代码之前&#xff0c;完成以下初始化代码&#xff1a; <script setup langts> &l…

如何使用 Apifox 来管理测试你的接口

日常开发&#xff0c;你是使用 Postman 来测试接口&#xff0c;还是用接口文档生成工具 Swagger&#xff0c;最近发现了一个很好用的工具 Apifox&#xff0c;集API 文档、API 调试、API Mock、API 自动化测试功能为一体&#xff0c;兼客户端和 Web 端的强大的功能。 主要界面如…

完善系统的最后一公里,增加系统日志功能

当我们在开发一个系统的时候&#xff0c;随着规划的功能越来越多&#xff0c;按照复杂度和稳定性相反的原则&#xff0c;为了保证系统能够按照我们设想的目标运行&#xff0c;我们需要对系统的运行状况进行监控。 那么什么时候介入监控比较好&#xff1f;在系统功能开发的前期…

java泛型面试_Java泛型面试问题

java泛型面试Java面试中的通用面试问题在相当长的时间内在Java 5周围越来越普遍&#xff0c;许多应用程序都转移到Java 5上&#xff0c;并且几乎所有新的Java开发都发生在Tiger&#xff08;Java 5的代号&#xff09;上。 泛型和Java 5功能&#xff08;例如Enum&#xff09;的重…

Vue3 实现网页背景水印功能

经常有一些公司和组织出于系统文件或信息安全保密的需要&#xff0c;需要在系统网页上增加带有个人标识&#xff08;系统账号或个人信息&#xff09;的水印&#xff0c;可以简单防止截图外传首先我们来看这样一个水印功能的实现思路&#xff0c;通常是在我们原有的网页上附上一…

部署微服务– Spring Boot fatjar到Amazon Elastic Beanstalk

最近&#xff0c;我正在研究概念验证的Web应用程序&#xff0c;我想将其部署到公共云以进行快速演示。 我决定使用Amazon&#xff0c;因为我已经有过使用它的经验。 亚马逊提供了几种不同的方式来部署Java Web应用程序。 EC2使我们可以灵活地在机箱上安装和配置任何我们想要的…

在线答卷系统的前端设计与数据库系统的设计与实现

如果要你实现一个在线的答题系统&#xff0c;你能想到它该具有哪些功能&#xff1f;当我接到这样一个需求的时候&#xff0c;脑海中立马能想到的就是它有录入题库的功能&#xff0c;创建试卷后可以从题库选择试题&#xff0c;并且可以针对试题进行分数的设置和排序。试卷发布后…

jgroups传输消息_使用JGroups进行ElasticMQ消息复制

jgroups传输消息ElasticMQ是一个消息服务器&#xff0c;具有Scala&#xff0c;Java和与Amazon SQS兼容的接口。 它通过跨服务器群集复制消息来支持有保证的消息传递&#xff0c;并通过日志记录实现消息持久性。 消息复制是ElasticMQ的核心功能之一。 但是&#xff0c;如果您看一…

使用 Element 组件搭建在线学习的课程卡片设计

假如我们要做一个在线课程学习的系统&#xff0c;其中我们需要做的一个功能就是课程信息流的一个展示&#xff0c;以等高卡片列表或者瀑布流的方式呈现。首先我们来罗列下这个卡片内应该包括哪些信息点&#xff1a;课程名称课程简介分类信息课程评分等级课程文件课时观看学习人…

12个很棒的Spring数据教程来启动您的数据项目

Spring Data的任务是为数据访问提供一个熟悉且一致的&#xff0c;基于Spring的编程模型&#xff0c;同时仍保留基础数据存储的特​​殊特征。 它使使用数据访问技术&#xff0c;关系和非关系数据库&#xff0c;map-reduce框架以及基于云的数据服务变得容易。 这是一个总括项目…

python多线程编程(3): 使用互斥锁同步线程

问题的提出 上一节的例子中&#xff0c;每个线程互相独立&#xff0c;相互之间没有任何关系。现在假设这样一个例子&#xff1a;有一个全局的计数num&#xff0c;每个线程获取这个全局的计数&#xff0c;根据num进行一些处理&#xff0c;然后将num加1。很容易写出这样的代码&am…