工欲善其事,必先利其器。除了一些主流的编辑器,在开源界,又有哪些精小却非常实用的文本编辑器呢?



作者 | 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 翻译,转载请注明来源出处。

太嚣张了!拿到这份Python学习资料的人!
<https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS6mUobksNSfHEWL3d15ikIqrp8y8ehCmZFqXa8Fplpd9sQvztoLIJ_H575Gqn7j9XyergEL3UHDGmTuAyBiqvJn3RCJ89_tOfhDWzbhFwjG8u_FJaRYKFrDxWPFh3KF2CCxWFpyX-BdszAQ9saSp5g46qsKad7bZuhyJ4xoOpSnOgDIRRhcF_xNtu5u2HQRA0U9Yz6k4VLXrFPheRB-Y0BYCYioxHkzTmA..&type=2&query=python%E5%AD%A6%E4%B9%A0>

https://edu.csdn.net/topic/python115?utm_source=csdn_bw
<https://edu.csdn.net/topic/python115?utm_source=csdn_bw>

【END】



作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓



 热 文 推 荐 

☞ Wi-Fi 联盟撤销华为资格;华为已熟练掌握 ARM 架构修改;苹果 2020 年或推 5G 手机 | 极客头条
<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650721046&idx=1&sn=bc3cbb6f2dd4a28d0fd6615b66dfe072&chksm=bea6bac589d133d33e807d7da19a82b482ed0acf87979e46ddd30a76d774f27859c3de247642&scene=21#wechat_redirect>

☞如何打造工业物联网帝国? <https://blog.csdn.net/csdnnews/article/details/90606434>

Python 爬取 620 首虾米歌曲,揭秘五月天为什么狂吸粉?!
<https://blog.csdn.net/csdnnews/article/details/90586687>

☞编程机器人哪家好?灵跃模组机器人硬核评测!
<http://mp.weixin.qq.com/s?__biz=Mzg3MDA4NDkxMQ==&mid=2247483975&idx=1&sn=14e610dec3f867a0d935294642623b90&chksm=ce927a07f9e5f311d7e52d9e354924290485895f8dd025cb3f56c2c9c0f71c38c1cd403ea6a3&scene=21#wechat_redirect>

薪水超过程序员,身为“经理”却挨打,产品经理究竟是怎样一种存在?
<https://blog.csdn.net/csdnsevenn/article/details/90584815>

震惊! 原来黑客洗钱的套路竟如此简单! 被盗的1600万美元就这样没了?
<https://blog.csdn.net/Blockchain_lemon/article/details/90602559>

全球再迎超级飓风,黑客可利用微软“蠕虫级”高危漏洞暴击全球
<https://blog.csdn.net/FL63Zv9Zou86950w/article/details/90587573>

☞10个数据科学家常犯的编程错误(附解决方案)
<http://mp.weixin.qq.com/s?__biz=MzU5MjEwMTE2OQ==&mid=2247486301&idx=2&sn=dceb46c36f6d0a8cdd9fb9b155175b7a&chksm=fe25a103c9522815e1328f219efbf6e1ff56b661c32521d9a3bea7ad2bdace862177996808d9&scene=21#wechat_redirect>

技术引路:机器学习仍大有可为,但方向在哪里?
<https://blog.csdn.net/csdnnews/article/details/90617004>

☞大神!这段代码让程序员躺赚200W,源码简单,你怎么看?
<http://mp.weixin.qq.com/s?__biz=MzA5MjcxNjc2Ng==&mid=2650560014&idx=2&sn=28fea90ad0731085c10c34f91c7a2a4d&chksm=88601dbfbf1794a92453391a2e4b5e265df466bf32dc30febf5139e81eb0c56c8340b243ab14&scene=21#wechat_redirect>

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信