直接用吧!盘点四款优秀开源协作文本编辑器
多年来,我一直在不懈地寻找“完美”的协作文本编辑器。我正在寻找的不仅仅是一个休闲的协作文本编辑器,而是一个开源、实时协作、基于网络的文本编辑器,具有许多丰富的功能。如果您有兴趣进一步研究,可以参考这份不断更新的编辑列表()。直到下一次我再次尝试研究这个话题,然后一切就这样周而复始!解决实时协作问题的解决方案。我本来打算全面介绍并列出每个协作文本编辑器,但这似乎没有多大价值。该编辑器还不错,但缺乏可用的开源协作服务器有点令人失望。接下来,我用 Feather 套件中的图标替换了该编辑器使用的图标。因此,编辑器可能会失去一些功能,主要是在可访问性方面,但它为进
出品| CSDN(ID:CSDNnews)
多年来,我一直在不懈地寻找“完美”的协作文本编辑器。 我正在寻找的不仅仅是一个休闲的协作文本编辑器,而是一个开源、实时协作、基于网络的文本编辑器,具有许多丰富的功能(不仅是纯文本,还包括结构化内容)。 因此,本文仅关注非常小的开源工具以及支持它们的技术。 如果您有兴趣进一步研究,可以参考这份不断更新的编辑列表()。
故事的开始
过去,我曾多次潜入无数的实时协作资源库,因此我可以轻松地探索这个资源库的最深处。 通常每次一开始,我都会对那些新的底层技术和研究论文感到非常兴奋和惊讶,然后我会逐渐感到呼吸急促,想要喘口气(毕竟水太深了),所以我将转向探索应用研究; 后来我的状态可以用这样来形容:“我是不是太傻了?” 在某些边缘情况下,服务器上的协作组件无法启动,或者两个以上的用户输入相同的单词,等等......你明白我的意思了(让我浮出水面喘口气)。 从那以后,我一时无法继续这个话题,于是这个想法就进入了冬眠,我趁着寒冬悄然过去,写下了代码。 直到下一次我再次尝试研究这个话题,然后一切就这样周而复始!
潜水过程
那是 2017 年,我对一篇研究论文中描述的算法(CRDT 的一种)很感兴趣,我花了几天时间用 JavaScript 实现了该算法,却发现论文本身有一个没有解决的极端情况。 当时我联系了作者,但没有得到回复。 然后我发现另一个团队用类似的算法解决了这个特殊的极端情况,但他们的实现略有不同,也许我可以移植他们的 Lisp 代码......,等等! 情况如何? 我当然不想用全新的算法来解决研究论文问题! 我在做什么 让我们刷新一下。
我(也许你也是,亲爱的读者)真正想要的是一个可以在生产中即插即用的编辑器。 解决实时协作问题的解决方案。 一个编辑器,可以让相距数万英里的多个用户编辑同一文档。 他们按下键盘上的按键来编辑结构化文档,并在屏幕上显示彼此的更改。 就这样。 不过编辑器很难做,我还没有找到这样的工具。
到目前为止。
现在已经是2019年了,我忍不住又回去了,然而,这一次我不仅发现了一个神奇的编辑器,而且还有两个势均力敌的编辑器可以满足一长串的上门要求。 我本来打算全面介绍并列出每个协作文本编辑器,但这似乎没有多大价值。 那么,我们就来看看这两位有望成为最终赢家的编辑吧。
尽管如此,我们还是选择了两位编辑器,因此您可以选择一位并客观地看看哪一位更适合您。 我使用以下类别进行了深入的科学评分(我将使用 * 表示推荐指数):
开放许可证:加一颗星(这实际上也是一个排除标准)
支持图片:添加星号
支持形式:加星
支持列表:加星
支持数学:添加一颗星
支持实时协作:添加星星
后台服务可用:加星
支持远程光标和远程选择:添加星号(表示可以看到其他用户的光标)
离线支持:加星(这个很难判断)
是否用于产品: 加星
移动支持:加一颗星
因此,根据上述评分机制,编辑最多可以获得11星。 下面就让我们一起来看看吧!
CK编辑器5
CKEditor 5的界面
首先,我们来看看新发布的高品质编辑器CKEditor 5。 CKEditor 5 很漂亮。 我知道,漂亮不是标准之一,但是漂亮也很重要(你同意吧),所以我不得不说。 该编辑器获得了很多星星:GPL 许可(尽管有一些限制,+1 颗星); 支持图像、表格、列表(+3 星); 对数学的插件支持(+1 星); 支持与远程光标和选择的实时协作(+2 星)。 CKEditor 背后的团队写了一篇关于他们使用动作转换实现编辑器的文章 ()。
然而,我没有看到实时协作所需的任何后台服务,所有文档都指向其云服务——一个强制付费组件,即使在兼容 GPL 的项目中也是如此。
离线支持很难判断,但看起来并不完全支持(短暂的中断还可以,但如果你离线几天就不行了),所以半星? 移动支持也是如此,全面支持仍在开发中(+0.5 颗星)。 最后一点,肯定有很多产品使用 CKEditor,但我没有找到用它构建的产品列表(+0.5 星)。
该编辑器还不错,但缺乏可用的开源协作服务器有点令人失望。
推荐指数:8.5星
Atlaskit编辑器
Atlassian 的 Atlaskit 编辑器
大约一年前,Atlassian 推出并开源了 Atlaskit 设计系统,随之而来的是其他好东西,包括一个成熟的编辑器,基于 ProseMirror 的 Atlaskit 编辑器。 我真的觉得这可能就是我一直在寻找的编辑! 该编辑器根据 Apache 2.0 许可证获得许可(这可以说是一个非常宽松的开源许可证,+1 星)。 它很好地支持图像、表格和列表(+3 星)。 大多数编辑器中的表格实现都很差,而且很少有特别好的:
Atlaskit Editor中的表管理
遗憾的是,该编辑器不支持数学,但由于该编辑器本身基于 ProseMirror,因此添加现有解决方案应该不会太困难(+0.5 颗星)。 它支持与远程光标和选择的实时协作(+2星),并且它的用户界面是我见过的最好的实现编辑器之一(例如,当远程用户的光标与您自己的光标重叠时,它会变成黑色,以及其他非常讨人喜欢的细节)。 另外,从我的测试来看,离线支持似乎相当可靠(+1 星),这可能是由于 ProseMirror 绝对权威的协作方式。 现在我们已经有了 7.5 星,我们还有很多东西需要检查,继续吧! 不幸的是,现实再次击碎了我的梦想。 与 CKEditor 一样,没有用于实时协作的后台服务。 失望,非常失望。 我想知道是否有什么办法可以解决这个问题。 无论如何,让我们先看一下评级,我只关心星级:肯定有产品使用它(数百万用户),并且它确实有移动支持(+2星)。 就在我正要宣布获胜者(满分 9.5 星)并发表这篇文章时,新的事情发生了。 事实证明,该编辑器中使用的徽标和图标以及许多其他 Atlaskit 组件都受到非常严格的 ADG 许可,该许可规定您不能在 Atlassian Universe 之外使用它们。 尤其是一些广泛使用且紧密集成在编辑器中的图标。 第二点太令人失望了,我扣掉了一颗星。 所以,最终这位编辑得到了8.5星,与上一位编辑打成平手。
等等,如果我们可以用这些图标做点什么......
协作文本编辑器最新的技术发展今天,我们只有两个编辑器,尽管它们具有非常好的功能,但我们根本无法在开源项目中使用它们 - 由于许可问题和/或公共构建块的缺乏。 如果真是这样的话,那我们就很不幸了。
所以,我先做了服务器部分(后台使用了PostgreSQL,以及PubSweet框架和REST/WebSockets共同提供的支持),点击这里获取代码()。 代码很简单,满足我们的目的,提供持久的文档和实时通信渠道。 令人惊奇的是,在庞大的 ProseMirror 社区的帮助下,我在没有准确的接口规范的情况下设法弄清楚了这个东西是如何工作的(+1 星)。
接下来,我用 Feather 套件中的图标替换了该编辑器使用的图标。 具体来说,这需要替换三个软件包,并且由于 ADG 许可证禁止任何类型的衍生作品,我们不得不从头开始重做这些软件包。 因此,编辑器可能会失去一些功能,主要是在可访问性方面,但它为进一步的开发提供了良好的开放基础。 例如,在某些情况下,图标本身缺乏更好的选择,如果您希望为该项目做出贡献,这可能是您的第一个目标(+1 星)!
完成上述所有操作后,我们现在距离满分仅差半颗星了。 当我第一次开始这个任务时,我无法想象自己能达到今天的水平。 这也意味着这场比赛有一个明显的赢家,我宣布:最终 Atlaskit 的编辑器因其多元化、开放和强大的 ProseMirror 社区而获胜。 单击此处查看该项目的文档 ()。 如果你刚刚开始一个新项目,也在考虑实时协作的功能,那么你可以从这里开始积极探索。 最后提醒大家一些注意事项()。
Atlaskit编辑器实时编辑功能演示
推荐指数:10.5星
值得一谈
还有另外两个编辑器值得一提,尽管他们还没有内置实时协作,但他们背后都有强大的支持库,因此可能会添加,或者可能已经计划好了。
Wax Editor(基于 ProseMirror 的文字处理器)
首先是 Wax(以一张古老的蜡片命名),Coko 基金会的编辑器,准确地说是文字处理器,最初构建在 Substance 库之上,现在使用 ProseMirror 重建,并且功能绝对非常丰富。 虽然它还没有完全达到我们的星级标准,但这款文字处理器具有一些非常出色的功能。 Wax 最初是为书籍制作应用程序而构建的,它支持记笔记(书籍中常用的编号注释)、跟踪更改、查找和替换等。 也许我们可以圈出这些函数? 如果是这样,Wax 将获得 4 颗星(开放许可证,支持图像、列表,也可以在产品中使用)和 4 个圆圈。
质地
纹理,基于物质的编辑器
最后,还有非常重要的编辑器,一个非常特殊和专业的开源编辑器,可以用来生成 JATS 格式(期刊文章的 XML 标准)的科学内容。 如果我们也采用星星或圆圈的方式,那就太多了:开放许可证、对表格、图像的支持、对数学的深度支持、对引用和交叉引用、列表、元数据的支持等。重申一下,Wax和Texture都是优秀的编辑器,我没有给他们星星的原因是因为他们缺乏实时协作功能,而这正是本文的重点。
总结
如果您正在构建一个系统,其中编辑器中的实时协作是关键组件,那么我希望这会有所帮助。 在过去的一年里,这个领域已经成熟,我们现在有很多即插即用的开放解决方案。 也许在您的帮助下,明年这个时候我们将有一大堆开放项目可供研究。 也许,我们也在不知不觉中使用构建在这些开放层之上的工具。
原来的: