重回铁王座!时隔5年!Quill 2.0 终于发布啦

quill · 浏览次数 : 0

小编点评

**Quill 2.0 新版本发布** **重要更新:** * 支持表格操作:通过 `table` 属性支持表格插入、删除和格式设置。 * 性能优化:添加 `insertBefore` 函数,提高大内容渲染速度。 * 新注册表功能:支持使用多个 Quill 实例共存。 **其他改进:** * 支持 TypeScript 编译。 * 改进了项目组织方式,使用 `Monorepo`。 * 迁移了单元测试到 `Vitest` 和 `Playwright`。 **其他信息:** * Quill 是一个非常受欢迎的开源富文本编辑器,目前已支持 v2.0 版本。 * 该版本包括许多新功能和性能优化。 * 鼓励使用并分享最新版本。

正文

你好,我是 Kagol。

2024年4月17日,Quill 2.0 正式发布🎉

最后一个 1.0 版本 1.3.7 发布于 2019年9月9日,时隔4年零7个月。

富文本编辑器拥有非常丰富的使用场景,我在做 OpenTiny 开源运营过程中,也经常有用户问:OpenTiny 有富文本吗?

于是在2023年6月,我们开始规划富文本组件,做技术选型时,考虑了 Quill、Tiptap、Editor.js、TinyMCE 等多款开源富文本,最终还是选择了 Tiptap,Tiptap 本身很优秀、且能满足我们的需求是一方面,另一个原因是我们觉得 Quill 已经“死了”,因为它已经4年不发版本了。

Quill 2.0 的第一个 dev 版本 2.0.0-dev.0 是2018年7月2日发布的,同年10月份发完 2.0.0-dev.3 之后,2.0 版本一直没有动静、似乎遥遥无期,很多开发者在 issue 询问 2.0 版本是否会发布,什么时候发布,官网都没有回应,似乎 Quill 真的“死了”。

我从2019年开始接触 Quill,当时的 Quill 是最受欢迎的开源富文本之一,我也基于 Quill 打造了一款更加实用、功能更加丰富的富文本组件 EditorX,并被应用于华为内部众多业务,并沉淀了 《深入浅出 Quill》 系列文章7篇。

这5年来,我一直在期待 Quill 2.0 的发布,上周看到 Quill 2.0 终于发布了,心情非常激动,于是立马升级体验了下,接下来我就带大家一起看看 Quill 2.0 有哪些重大更新。

支持表格操作

从功能上来说,我觉得最大的变化就是支持表格的操作,1.0 版本是不包含表格功能的。

2.0 增加了一个 table 的 module 和 format,但目前还比较简单,只能通过调用 API 的方式操作表格,还没有操作表格的 UI,比如:在工具栏点击表格图标,只能插入一个一行一列的表格,没法直接在界面操作,比如插入行列等。

const quill = new Quill('#editor', {
  theme: 'snow',
  toolbar: [
    [{ header: ['1', '2', '3', false ] }],
    ['bold', 'italic', 'underline', 'link'],
    [{ list: 'ordered' }, { list: 'bullet' }],
    ['clean'],
    ['table'] // 在工具栏中增加表格格式
  ]
})

效果如下:

如果是 1.x 版本,以上代码是没法在工具栏显示表格图标的,并且在浏览器控制台会提示:不存在的表格格式

这个表格功能还是太简陋,没法真正在项目中用起来,我早在 2019 年基于 Quill 和 QuillBetterTable 做了一个表格效果,当时是基于 2.0.0-dev.3 版本的 Quill。

支持了以下特性:

  • 在工具栏插入指定行列的表格
  • 表格行高、列宽拖拽
  • 右键菜单工具栏操作:插入行/列、删除行/列、合并/拆分单元格等

在工具栏插入指定行列的表格:

富文本中的表格操作效果:

支持 TypeScript

从工程结构来看,最大的两个变化就是从 JavaScript 改造成了 TypeScript,项目组织方式改成了 Monorepo 方式。

更好的类型检验和错误提示,不仅提升了开发效率,而且增加了 DX 开发者体验,看来 TypeScript 和 Monorepo 依然是大趋所势!

另外单元测试也由 WebdriverIO 迁移到 Vitest,E2E测试则由 Karma 迁移到了 Playwright。

看着这个技术栈,觉得非常熟悉,和我们的 TinyVue 跨端跨框架组件库基本是一样的。

支持多 Quill 实例

随着 Quill 的普及和使用频率的增加,越来越多开发者希望在同一页面使用多个 Quill。

例如,博客产品可能会使用 Quill 来为帖子本身提供功能齐全的编辑界面,包括标题、图像和代码块,而在同一页面上,Quill 还以仅支持粗体、斜体和链接格式的方式为评论输入提供能力。

Quill 2.0 的新注册表功能支持这种场景,允许在同一页面上共存多个具有各自格式配置的编辑器,而不会发生任何冲突。

在 Quill 的文档中了解更多关于注册表的信息:Registries

性能提升

Quill 2.0 包含许多性能优化,其中最重要的是提高了大内容的渲染速度。

  • 增加 insertBefore 函数,并通过尽可能使用 insertBefore,提高了 setContents 的性能
  • 通过优化 getRange 函数,提升了同时渲染多个 Quill 实例的性能,在一个页面中同时渲染4000个Quill实例,优化后的渲染性能提升近10倍
  • 优化 Quill 实例初始化逻辑,当内容为空时,无需执行 setContents 函数

渲染4000个Quill实例,优化前后加载时间对比:

关于 Quill 2.0 的更多更新,请参考 Quill 官网文档和博客文章:

欢迎关注《深入浅出 Quill》系列文章

之前写过一个 Quill 系列文章,从使用到原理,再到实践,以及富文本编辑器的选型。

由于 Quill 很久没更新,我觉得也没必要更新了,现在 Quill 2.0 发布,又给了我继续更新下去的动力,欢迎朋友们持续关注深入浅出 Quill 系列文章,我将带你解锁更多 Quill 的玩法,并深入剖析 Quill 的实现原理,了解这款重新坐上开源富文本编辑器“铁王座”的 Quill,究竟有什么独特之处,能受到这么多开发者们的喜爱。

感兴趣的朋友也可以关注下我的微信公众号:前端开源星球个人博客

联系我们

公众号:OpenTiny

GitHub:https://github.com/opentiny/tiny-vue(欢迎 Star ⭐)

官网:https://opentiny.design/tiny-vue

B站:https://space.bilibili.com/15284299

个人博客:https://kagol.github.io/blogs

与重回铁王座!时隔5年!Quill 2.0 终于发布啦相似的内容:

重回铁王座!时隔5年!Quill 2.0 终于发布啦

2024年4月17日,Quill 2.0 正式发布期待了5年,我怀着激动的心情立马升级体验了下,本文我就带大家一起看看 Quill 2.0 有哪些重大更新。

WPF复习知识点记录

# WPF复习知识点记录 由于近几年主要在做Web项目,客户端的项目主要是以维护为主,感觉对于基础知识的掌握没有那么牢靠,趁着这个周末重新复习下WPF的相关知识。 文章内容主要来自大佬刘铁锰老师的经典著作《深入浅出WPF》。 因为是复习,所以知识内容不会一一记录,如有需要了解更多可以看书中内容。 *

【重磅】华为云盘古大模型5.0,正式发布!

2024年6月21日,在华为开发者大会2024(HDC 2024)上,华为常务董事、华为云CEO张平安正式发布盘古大模型5.0,在全系列、多模态、强思维三个方面全新升级;张平安还分享了盘古大模型在自动驾驶、工业设计、建筑设计、具身智能、媒体生产和应用、高铁、钢铁、气象等领域的丰富创新应用和落地实践,

重磅发布!华为开发者空间:让每位开发者拥有一台云主机

​​本文分享自华为云社区《华为开发者空间发布,让每位开发者拥有一台云主机,在华为根生态上创新》,作者:华为云社区精选。 6月21日,华为开发者大会2024(HDC 2024)在东莞篮球中心隆重揭幕。会上,华为常务董事、华为云CEO张平安宣布,华为云为每个新生态的开发者免费提供一台云主机、一套开发工具

Tarjan 求有向图的强连通分量

重温Tarjan, 网上看了许多博客感觉都讲的不清楚. 故传上来自己的笔记, 希望帮到大家. 提到的一些概念可以参考 oi wiki, 代码也是 oi wiki 的, 因为我不认为我能写出比大佬更好的代码了. 强连通分量: 有向图的最大强连通子图 ( 有向图中任意两点可达 ) Tarjan 对每个结

Yolov8和Yolov10的差异以及后处理实现

Yolo模型可分为4个维度的概念 模型版本、数据集、模型变体(Variants)、动态/静态模型。 Yolo各模型版本进展历史 Yolov(2015年华盛顿大学的 Joseph Redmon 和 Ali Farhadi 发布)Yolov2(2016年Joseph Redmon发布)Yolov3(20

重新定义性价比!人工智能AI聊天ChatGPT新接口模型gpt-3.5-turbo闪电更新,成本降90%,Python3.10接入

北国春迟,春寒料峭略带阴霾,但ChatGPT新接口模型gpt-3.5-turbo的更新为我们带来了一丝暖意,使用成本更加亲民,比高端产品ChatGPT Plus更实惠也更方便,毕竟ChatGPT Plus依然是通过网页端来输出,Api接口是以token的数量来计算价格的,0.002刀每1000个token,token可以理解为字数,说白了就是每1000个字合0.01381人民币,以ChatGPT无

第137篇:重学ES6模块化

好家伙, 我原本以为学完模块化之后,就能非常顺利的完成我的项目分包, 然而并没有,这是非常重要的知识,而我没有学好 所以我决定重学一遍 本篇为《阮一峰 ECMAScript 6 (ES6) 标准入门教程 第三版》第23章"Module的语法"学习笔记 1.概述 历史上,JavaScript 一直没有

[转帖]重写Nacos服务发现逻辑动态修改远程服务IP地址

https://www.cnblogs.com/changxy-codest/p/14632574.html 背景 还是先说下做这个的背景,开发环境上了K8S,所有的微服务都注册在K8S内的Nacos,注册地址为K8S内部虚拟IP,K8S内的服务之间相互调用没有问题,但是本机开发联调调用其他微服务就

[转帖]Access-Control-Allow-Origin跨域解决及详细介绍

重要声明:本文章仅仅代表了作者个人对此观点的理解和表述。读者请查阅时持自己的意见进行讨论。 本文更新不及时,建议到原文地址浏览:跨域解决及详细介绍。 首先,跨域不是问题。是一种安全机制。 这是你在开发时、上线前就必须提前考虑到的安全问题并且采取合适的手段去避免这个问题带来的程序错误。不过通常情况下,