实时协作富文本编辑

时间:2015-03-24 15:19:42

标签: javascript node.js editor real-time collaborative

我想为我的webapp创建一个实时协作富文本编辑器。到目前为止,我已经做了很多研究,我真的有点沮丧,因为那里没有任何合适的东西。 问题是,那里的每个解决方案都与编辑器紧密耦合(例如Firepad使用CodeMirror / Etherpad使用Etherpad)。 我发现只有两个其他解决方案很有趣:

  • ShareJs - >仅适用于纯文本

  • Webstrate - >这对我来说是最有希望的。它可以处理DOM同步,因此它可以处理每个有意义的 - 很棒!

但Webstrate的问题是,它是一个alpha版本。所以对我来说这太麻烦了 - 没有成功。试图让它工作约2天。文本同步很简单。但它不适用于iframe或其他东西。

我对协作RTE的要求非常高 - 它应该支持:

  • 图片

  • 内部框架

  • 视频

  • 文字(当然)

虽然我现在正在寻找解决方案大约3-4天 - 也许你有人有提示?会很温柔;)

3 个答案:

答案 0 :(得分:3)

我发现最接近的是http://quilljs.com/ - 它有一个API,用于获取和更新文本增量,以及获取和设置多个带标签的游标。它不会为您管理实时编辑,但它足以让您使用(比我找到的任何其他项目更多)。但是它在格式化方面不如其他编辑器那么全面(例如,它不支持表和嵌套列表)。它有点可扩展,因此您可以添加对其他HTML元素的支持。

答案 1 :(得分:3)

您可以尝试http://swellrt.org,这是一个开发实时协作应用程序的完整框架,包括富文本支持和用于Web的编辑器

它提供了一个JS API,类似于GD Real-time API,以及富文本编辑。

编辑器可以扩展为支持任何附件。

这是Apache Wave的一个分支,它概括了原始代码。

答案 2 :(得分:1)

强大的协作富文本编辑器仍然有点前沿。大多数基于Web的文本编辑器分为两类。

  1. 那些与实时协作兼容但功能相当有限的(例如没有表格,没有嵌套元素等)。
  2. 那些非常强大的基于Web的富文本编辑器,但缺乏与实时技术集成的API。
  3. 然后是ShareDB,Google Drive Realtime API,SwellRT和Convergence等协作引擎(完全披露我是Convergence Labs的创始人)。这些类型的系统各自对数据模型以及如何调解协作有自己的看法。可能是您最喜欢的富文本编辑器在内部工作的方式与协作引擎的API不兼容。

    那些简单地同步DOM的技术很有意思,因为它们通常可以在编辑器之间移植,并且不太依赖于编辑器API,但是它们往往缺乏良好协作所需的大量所需的实时编辑功能。 (共享游标,共享选择等)。这可能很难在引擎本身外部的DOM同步方法之上实现。遗憾的是,如果没有这些功能,协作编辑体验就不那么好了。

    有几个项目试图纠正这种情况。 CKEditor的工作人员正致力于CKEditor 5的合作。此外,在Convergence,我们正在尝试与许多流行编辑的作者合作,以实现实时协作。

    现实情况是,它仍然是一个非常新的空间并且发展迅速。没有经过测试,可扩展的灌篮解决方案,它提供了开箱即用的全功能,协作,免费和开源编辑器。 2018年情况似乎有所改善。希望在接下来的12-24个月内,这将成为一个更容易解决的问题。