内容简介:工欲善其事,必先利其器。除了一些主流的编辑器,在开源界,又有哪些精小却非常实用的文本编辑器呢?
工欲善其事,必先利其器。除了一些主流的编辑器,在开源界,又有哪些精小却非常实用的文本编辑器呢?
作者 | Jure Triglav
译者 | 弯月,责编 | 屠敏
出品 | CSDN(ID:CSDNnews)
多年来,我一直在为找到“完美”的协作文本编辑器而坚持不懈地努力。我想找的可不是随随便便的协作文本编辑器,而是开源、实时协作、基于Web、拥有很多丰富功能的文本编辑器(不仅仅是纯文本,还有结构化的内容)。因此,这篇文章只关注非常小众的开源 工具 以及支持它们的技术,如果你有兴趣进一步研究的话,可以参照这个持续更新的编辑器列表(https://github.com/JefMari/awesome-wysiwyg)。
故事的开始
以前,我就多次深入不计其数的实时协作资源库中,所以我可以轻车熟路地探索这个资源库的最深处。通常每次刚开始的时候,我都会为那些新的底层技术和研究论文感到非常兴奋和惊奇,后来就会渐渐地感觉呼吸不畅想要喘口气(毕竟水太深了),于是我会转而探索应用方面的研究;再到后来,我的状态大约可以形容成:“我是不是太笨了?”(也许吧),因为文档、演示程序和代码总是不完全匹配或根本讲不通,还有服务器上的协作组件无法启动,或者两个以上的用户输入同一个单词的极端情况,等等……你明白我的意思吧(让我浮出水面喘口气)。从那以后,我一时间无法再继续这个主题,所以后来这个想法就进入了冬眠,我一边写代码一边静静地凛冽的寒冬过去。直到下一次我再次试图研究这个主题,然后一切周而复始!
潜水的过程
那是2017年,我对一篇研究论文中描述的算法(CRDT的一种)产生了浓厚的兴趣,我花了几天时间用JavaScript实现了这个算法,结果发现论文本身有一个极端情况没有解决。当时,我联系了作者,却没有得到任何回复。后来我发现另一个团队用类似的算法解决了这个特殊的极端情况,但是他们的实现略有不同,也许我可以把他们的Lisp代码移植过来……,等一下!什么情况?我当然不希望通过一个全新的算法解决研究论文中的问题!我在干嘛?让我们重新整理一下。
我(也许你也是,亲爱的读者)真正想要的是,一个可以在产品中即插即用的编辑器。一个能够解决实时协作问题的解决方案。一个能够让相隔几万里的多个用户编辑同一个文档的编辑器,他们按下键盘上的键就可以编辑结构化文档,并在屏幕上显示彼此的更改。仅此而已。然而,编辑器很难做,而我也从未找到过这样的工具。
直到现在。
现在是2019年,我忍不住再次回归,然而,这次不仅发现了一个神奇的编辑器,而且还有两个势均力敌的编辑器可以满足上门那串长长的要求。我原本打算介绍整体的情况,并列举出每种协作文本编辑器,但这似乎没有太多价值。所以,我们还是看看这两款有望成为最终赢家的编辑器吧。
尽管如此,我们还是能选出两款编辑器,所以你可以从中选择一个,客观地看看哪个更适合自己。我利用以下分类进行了深入的科学分级(我将用*来表示推荐指数):
-
开放许可证:加一颗星 (这实际上也是一个排除标准)
-
支持图像:加一颗星
-
支持表格:加一颗星
-
支持列表:加一颗星
-
支持数学:加一颗星
-
支持实时协作:加一颗星
-
后台服务可用:加一颗星
-
支持远程光标和远程选择:加一颗星 (表示你可以看到其他用户的光标)
-
离线支持:加一颗星 (这个很难判断)
-
是否用于产品:加一颗星
-
移动支持:加一颗星
因此,根据以上评分机制,编辑器最多可以获得11颗星。下面就让我们一起来看看吧!
CKEditor 5
CKEditor 5的界面
首先,让我们来看看CKEditor 5,这是一款新发布的高质量编辑器。CKEditor 5很漂亮。我知道,漂亮不是标准之一,但是漂亮也很重要啊(你也同意,对不对),所以我必须说出来。这个编辑器可以获得很多星星:拥有GPL许可(虽然有一些限制,+1颗星);支持图像、表格、列表(+3颗星);插件支持数学(+1颗星);支持实时协作与远程光标和选择(+2颗星)。CKEditor背后的团队写了一篇关于他们利用操作转换实现了该编辑器的文章(https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/)。
然而,我没有看到实时协作所需的后台服务,而且所有文档都指向其云服务——这是一个必须的付费组件,即使在与GPL兼容的项目中也是如此。
离线支持的情况很难判断,但看起来并没有做到完全支持(短暂的中断连接还好,但是如果你离线数天情况就不好说了),所以给半颗星?移动支持也是如此,全面的支持还在开发中(+0.5颗星)。最后一点,肯定有许多产品在使用CKEditor,但我没有找到利用它构建的产品的列表(+0.5颗星)。
这款编辑器还不错,但缺乏可用的开源协作服务器确实让人有点失望。
推荐指数:8.5颗星
Atlaskit编辑器
Atlassian的Atlaskit编辑器
大约在一年前,Atlassian推出并开源了Atlaskit设计系统,随之而来的还有其他好东西,其中包括一个成熟的编辑器——基于ProseMirror的Atlaskit编辑器。我真心觉得这可能就是一直以来我苦苦追寻的那个编辑器!这款编辑器拥有Apache 2.0许可的授权(这可以说是一个非常宽松的开源许可,+1颗星)。它可以很好地支持图像、表格和列表(+3颗星)。大多数编辑都非常缺乏表格的实现,特别是做得非常好的就更加寥寥无几了:
Atlaskit编辑器中的表格管理
遗憾的是,这款编辑器不支持数学,但由于编辑器本身是基于ProseMirror的,因此添加现有的解决方案应该不会太困难(+0.5颗星)。它支持实时协作与远程光标和选择(+2颗星),而且它的用户界面是我见过的编辑器实现最好的一个(例如,当远程用户的光标与你自己的重叠时就会变暗,还有其他非常讨人喜欢的细节)。此外,从我的测试中,离线支持似乎非常稳固(+1颗星),这可能是由于ProseMirror使用了绝对权威的的协作方法。现在我们已经有7.5颗星了,我们还有很多项需要考察,继续!不幸的是,现实再一次击碎了我的美梦,与CKEditor一样,实时协作没有后台服务。失望,非常失望。我在想有没有什么办法解决这个问题。无论怎样,让我们先看完评分标准,我只关心星数:肯定有产品在使用它(数百万用户),它确实有移动支持(+2颗星)。就在我打算即将宣布获胜者(总共9.5颗星),并发布本文的时候,却出现了新情况。原来这款编辑器中使用的标志和图标,以及许多其他Atlaskit组件,都使用了非常严格的ADG许可,该许可声明你不能在Atlassian Universe之外的地方使用它们。尤其是编辑器中广泛使用并紧密集成的一些图标。第二点让人太失望了,我要拿走1颗星了。于是,最后这个编辑器拿到了8.5颗星,与上一个编辑器打成了平手。
等等,如果我们可以处理一下这些图标呢......
协作文本编辑器最新的技术发展的今天,我们仅有的两款编辑器,尽管它们拥有非常优异的功能,但我们根本无法在开源项目中使用——由于许可的问题,以及缺乏公开的构建块,或两者兼而有之。如果要真是这样,那我们真是太不走运了。
所以, 我首先做了服务器部分 (后台使用了PostgreSQL,并利用了PubSweet框架和REST / WebSockets共同提供的支持),点击这里可以获取代码(https://github.com/jure/pubsweet-blogger/blob/master/server/component-atlaskit-collab/src/collab.js)。这些代码很简单,而且也可以达到我们的目的,并提供持久的文档和实时通信渠道。令人惊讶的是,在庞大的ProseMirror社区的帮助下,我在没有准确的接口规范的情况下,居然搞清楚了这些东西的工作方式(+1颗星)。
接下来,我用Feather套件中的图标替换了该编辑器使用的图标。具体来说,这需要替换三个软件包,而且由于ADG许可禁止任何类型的衍生作品,我们只能从头开始重做这些软件包。由于这个原因,该编辑器可能会丢失一些功能,主要体现在可访问性方面,但它为进一步开发提供了良好的开放基础。例如,在某些情况下,图标本身缺少更好的替代品,如果你希望为此项目做出贡献的话,这可以成为你的第一个目标(+1颗星)!
经历了以上种种之后,我们现在距离一个完美的评分只差半颗星了,当初刚开始这样的探索时,我根本无法想象能走到今天这一步。这也意味着,在这场比拼中有一个明显的赢家,我宣布:最终Atlaskit的编辑器因其多样化、开放和强大的ProseMirror社区而获胜。点击这里,查看这个项目的文档(https://github.com/jure/pubsweet-blogger)。如果你刚刚开始做一个新项目,而且也在考虑实时协作的功能,那么就可以从这里开始积极的探索了。最后,提醒你一些注意事项(https://github.com/jure/pubsweet-blogger/blob/master/README.md)。
Atlaskit编辑器的实时编辑功能演示
推荐指数:10.5颗星
值得一提
还有两款编辑器非常值得一提,即使它们现在还没有自带的实时协作,但是它们背后都有强大的支持库,因此有可能会添加,也有可能已经在计划中了。
Wax编辑器(基于ProseMirror的文字处理器)
首先是Wax(以古老的蜡片命名),Coko Foundation的编辑器,准确来说应该是文字处理器,最开始是在Substance库之上构建的,现在使用ProseMirror重新构建过了,功能绝对非常丰富。虽然与我们给星的标准不完全相同,但该文字处理器拥有一些非常棒的功能。 Wax最初是为书籍制作应用程序而构建的,它支持笔记(书籍中常用的编号注释)、跟踪更改、查找和替换等。或许这些功能我们可以给圈圈?如果是这样的话,Wax将获得4颗星(开放许可证,支持图像、列表,还可用于产品)和4个圈圈。
Texture
Texture,一款基于Substance的编辑器
最后,还有一个很重要的编辑器,这是一款非常特殊且专业的开源编辑器,可用于以JATS格式(期刊文章的XML标准)生成科学内容。如果我们也采用给星或给圈圈的方式的话,那么就要数不过来了:开放许可,支持表格、图像,深入支持数学,支持参考和交叉引用、列表、元数据等等。重申一下,Wax和Texture都是非常出众的编辑器,我之所以没有把它们纳入给星排名是因为它们缺乏实时协作功能,而实时协作才是本文重点关注的功能。
总结
如果你正在构建一个系统,而编辑器中的实时协作是关键组件,那么希望这篇对你有所帮助。在过去的一年里,该领域已经发展成熟,而且现在我们有很多即插即用的开放式解决方案。也许在你的帮助下,明年的这个时候我们将有一整套开放项目可供学习。也许,我们还会在不知不觉中使用建立在这些开放层之上的工具。
原文:https://juretriglav.si/open-source-collaborative-text-editors/
本文为 CSDN 翻译,转载请注明来源出处。
【END】
作为码一代,想教码二代却无从下手:
听说少儿编程很火,可它有哪些好处呢?
孩子多大开始学习比较好呢?又该如何学习呢?
最新的编程教育政策又有哪些呢?
下面给大家介绍CSDN新成员: 极客宝宝(ID: geek_baby)
戳他了解更多↓↓↓
热 文推 荐
☞ 薪水超过程序员,身为“经理”却挨打,产品经理究竟是怎样一种存在?
☞震惊! 原来黑客洗钱的套路竟如此简单! 被盗的1600万美元就这样没了?
☞全球再迎超级飓风,黑客可利用微软“蠕虫级”高危漏洞暴击全球
☞大神!这段代码让 程序员 躺赚200W,源码简单,你怎么看?
点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。
你点的每个“在看”,我都认真当成了喜欢
以上所述就是小编给大家介绍的《直接拿来用!盘点四款优秀的开源协作文本编辑器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!