- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经通过使用 @teamwork/sharedb 和 @teamwork/sharedb-mongo 适配器在后端 NodeJS 中存储更改来在 quill 中实现协作编辑。但是,对于我们如何像谷歌文档建议模式一样实时显示跟踪变化并添加评论功能,我仍然处于两难境地?
最佳答案
一年后,我将概述我们迄今为止的发现:
带有 OT 的 quill js 方法
我们尝试使用 QuillJS 实现跟踪更改/建议,并且取得了相对较大的进展。但最终它并没有真正起作用,因为 OT(操作转换,用于同步更改的格式)不支持分层结构。 CKEditor 的团队更改了 OT 以支持这一点。但不幸的是,这似乎需要做很多工作,而且他们的代码已关闭(https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/)。谷歌也用OT解决了它,但他们的代码也没有开放。因此,据我所知,到目前为止,还没有开源解决方案可以用 html 解决跟踪更改/建议。而且似乎没有人愿意这样做,因为努力似乎非常高。所以我们的结论是:我们停止了这种方法。
一段时间以来,我们只是处理其他问题,而将编辑器放在一边(在我们的项目中要做的其他事情太多了)。但就在最近,我们开始了第二种方法,它仍处于起步阶段,但看起来很有希望。
前镜方法
Prosemirror也有相对定位的格式,不过不是OT,他们叫一步。这似乎更加灵活,Prosemirror 的 doc 结构类似于 html 文档的 DOM 结构。这里介绍(https://marijnhaverbeke.nl/blog/collaborative-editing.html)。
对于 Prosemirror,已经有一些解决跟踪更改/建议问题的方法。如果您在此站点 (https://www.tag1consulting.com/blog/evaluating-real-time-collaborative-editing-solutions-top-fortune-50-company) 上向下滚动一点,您会发现一个汇总了当前可用解决方案的表格。对于 Prosemirror,这是:
1. Prosemiror 合作
Prosemirror collab 是 Prosemirror 团队提供的解决方案( https://github.com/ProseMirror/prosemirror-collab ,此处示例 https://prosemirror.net/examples/collab/#edit-Example )。正如您在上面的总结中看到的那样,这种方法并不是最可取的。人们说它不能很好地扩展,而且这种方法效率不高。最近有人试图稍微改进一下(https://github.com/benaubin/prosemirror-collab-plus)。
2. 使用 CRDT 的 Yjs
另一种方法是使用 Yjs。这甚至可以去中心化,允许离线编辑等。这种方法看起来很有前途,Yjs作者的这篇文章(https://discuss.prosemirror.net/t/prosemirror-crdts/1190/13)描述了与 Prosemirror 协作方法相比的优势。它基于 CRDT (https://josephg.com/blog/crdts-are-the-future/),它是 OT 的更新替代方案。对于 Yjs,已经存在一个 Prosemirror 绑定(bind) (https://github.com/yjs/y-prosemirror),它主要从绝对 Yjs CRDT 位置转换为相对 Prosemirror 步位置,反之亦然。不幸的是,目前没有用于建议的插件。在这里查看我的帖子 (https://discuss.yjs.dev/t/live-tracking-track-changes/293)。
其他方法/灵感
在过去的几周里,我收集了一些使用 Prosemiror 的方法。我认为他们中的大多数人都使用 Prosemirror collab,但实际上我不确定。但无论如何,这些方法可能有助于在 Prosemirror 和 Yjs 上实现它。这是一个基于 Prosemirror 的编辑器列表,允许跟踪更改/建议:
关于node.js - 如何像 Google 文档一样在羽毛笔编辑器中执行跟踪更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58887843/
我正在工作中学习 Node 和 Feathers。需要制作一个简单的应用程序,该应用程序将使用 Feather 来加载带有示例数据的 [nedb]。 var fake = require('./fak
我想为需要加载一些关联的某些羽毛服务调用。问题是,当我使用钩子(Hook)以“羽毛方式”进行操作时,钩子(Hook)不是一次性的,而是继续使用。有没有办法做一个“羽毛方式一次性关联”?钩子(Hook)
我们如何创建或添加下面的示例参数作为验证查询参数。我试过下面的东西,但它是错误的。有人有想法吗?谢谢。 #网址 http://localhost:3030/peopltable?$or[0][adde
我正在为 mysql 数据库使用 Sequelize。 当我使用 Postman 的 Find 函数时,它返回: { "total": 1, "limit": 10, "ski
我正在使用 FeathersJS 和 ReactJs 来构建一个应用程序,现在我陷入了某个问题。 我正在处理的用户界面是一个表格,我有一个导航栏来控制展示的数据,就像在图像中一样。 在选择中,用户可以
我有一个非常基本的feess服务,它使用feathers-mongoose包将数据存储在mongoose中。问题在于获取功能。我的模型如下: module.exports = function (ap
我正在使用feathersjs(带有websockets)并在我的服务器上进行 Sequelize 并升级到Buzzard版本。这个钩子(Hook)在我的服务器上,在升级之前可以正常工作: ``` m
我是一名优秀的程序员,十分优秀!