Skip to content

从etherpad中分离出来的实时编辑模型核心,可接入第三方富文本编辑器

Notifications You must be signed in to change notification settings

powcoding/etherpad-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 

Repository files navigation

介绍

什么是etherpad

etherpad是一款开源的、可支持多人实时编辑的web编辑器:etherpad-lite

etherpad的整体交互模型

etherpad的交互模型

etherpad的客户端、服务器端模型、基于富文本的数据协议:

关于etherpad的解析器

etherpad的解析器

etherpad产生diff的2种方式

  • 如果是点击菜单栏上的功能按钮,那么etherpad根据(1)当前选区位置(2)当前选区内容(3)按钮指令(加粗、下划线、字号...)生成对应的diff
  • 如果是用户在编辑器内不断的输入文字,那么etherpad通过定时检测来获取内容的变化,生成对应的diff

etherpad-core产生的背景

  • etherpad内嵌了自己的一个编辑器ace editor,不支持接入第三方富文本编辑器
  • 但是etherpad具备了完整的实时协作机制,包括:客户端、服务器端的模型设计,多人冲突的设计,对富文本格式的解析,对输入法的支持等。这些功能自己实现起来很困难
  • 想基于第三方富文本编辑器实现多人实时协作的功能,业界并没有现成的方案
  • 如果能利用etherpad的实时协作机制,又能接入第三方编辑器,那就是一个完美的方案

etherpad-core做了什么?

  • etherpad产生diff的2种方式中的第1种方式,完全是etherpad自己的私有机制,没法接入第三方编辑器
  • 但是利用第2种方式,不管第三方编辑器如何改变编辑器内容,只要让etherpad定时去检测到变化,就能生成diff,后续流程完全和原生etherpad一致
  • 将etherpad对内置编辑器的绑定解耦,通过设计api暴露出来,可绑定到第三方编辑器上。这样第三方编辑器就具备了和原生etherpad相同的整套实时协作编辑的能力
  • 不断强化etherpad的解析器。

demo

todo

  • etherpad-core初始化的api设计
  • 强化etherpad的解析器:支持缩进(text-indent),分割线(hr),表格(table)...
  • 在线demo

About

从etherpad中分离出来的实时编辑模型核心,可接入第三方富文本编辑器

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published