引言
如何设计和实现一个多用户场景下的文档编辑器?
如果的只是单用户的场景,其实可以很简单地实现,只需要一个 <TextArea />
输入框就够了。至于富文本的实现,可以直接渲染Markdown,那么文档的数据只需要朴素的文本格式保存md string就行了。不涉及状态同步,没有复杂数据模型,也不会产生任何冲突。
但是在多用户的场景下,一篇文档可能被多个用户分时或者同时编辑,而且文档也可能有排版需求。编辑器如何支持多用户编辑场景?文档的数据模型又该如何设计?多用户编辑产生的冲突又如何解决?
第一个问题,编辑器要支持多用户编辑场景,就是要记录和同步每个用户修[……]