ProseMirror - 用于在Web上构建富文本编辑器的工具包

19-01-26 banq
    

这是一款可以生成结构化,语义上有意义的文档的内容编辑器,但这样做的方式很容易让用户理解。ProseMirror试图弥合Markdown文本编辑和经典WYSIWYG 编辑器之间的差距。

特点:

  • 协同编辑

    ProseMirror具有内置的,可靠的支持,用于协作编辑,其中多个人实时处理同一文档。

  • 可扩展的模式

    文档模式允许使用自定义结构编辑文档,而无需从头开始编写自己的编辑器。

  • 模块化

    模块化架构确保您只加载所需的代码,并可根据需要替换系统的各个部分。

  • 可插拔

    插件系统允许您轻松启用其他功能,并以方便的格式打包您自己的扩展。

  • 实用

    功能强大且不可变的体系结构使ProseMirror可以轻松集成到现代Web应用程序中,并可靠地实现复杂的行为。

  • Unopinionated

    核心库很小且通用,提供了可以构建非常不同类型的编辑器的基础。

网友评论:

ProseMirror中的许多想法都很好地反映了前端Web开发中的许多最佳现代趋势(如React.js),网友lewisjoe认为:ProseMirror是我曾经使用过的最好的源码。

james认为:

1.该组件质量非常高,已被主要企业使用:纽约时报,卫报,Zoho ......

2.这个组件由在开源社区中受到广泛认可的开发人员负责。

arclini:

我最近一直在构建一个编辑器,并考虑了Slate并简要地使用了Draft(都建立在React之上)。我们最终使用了Quill。

如果你们中的任何一个人使用过Quill和Prosemirror,你们对两者之间的差异印象如何?

这是我到目前为止所观察到的:

1. DraftJS(React)适用于桌面,但没有协作编辑,移动支持和有限开发的计划。我们发现很难扩展自定义行为的粘贴处理。另一方面,围绕它建立了很多漂亮的库(我们使用了中草案)

2. Slate(React)绝对是不需要移动支持的React开发人员的方法。它已经成熟并且拥有一个良好的开发者社区。一个缺点是一些流行的插件失去了与最新版Slate的兼容性,一些插件维护者(特别是Gitbooks)决定停止跟踪主线版本[1]

3. Quill(非React)似乎非常成熟,拥有良好的插件生态系统。它不依赖于React Components,而是依赖于DOM和您构建的模型之间的严格映射。“模型”是DOM,可以这么说,但是有很多限制来避免ContentEditable问题。我们发现它非常成熟,而且它是我们发现的3个开箱即用的移动和协作编辑支持中唯一的一个。这对我们很重要,所以我们今天最终使用它

lewisjoe:

我简要分析一下ProseMirror以及Quill对比:

1. 与Quill相比,ProseMirror似乎建立了更好的文档。

2. ProseMirror的作者真正想到了每一个API,并且大部分细节都恰到好处。

例如,如果我应该在Quill vs ProseMirror之上构建一个语法检查器,我在Quill中找不到任何API,它们允许我们用语法错误和建议来装饰视图,而不会用自定义节点污染核心数据模型/属性。另一方面,ProseMirror具有针对这种情况的装饰器(https://prosemirror.net/docs/ref/#view.Decorations)的概念。这只是一个例子。

更多看看Quill自己的作者:https://news.ycombinator.com/item?id=15468402

Prosemirror比Quill更愿意牺牲简单的力量。这种价值差异体现在目标受众,架构和API设计中:

1. Quill可以用于快速用例。Prosemirror特别警告:“如果您正在寻找一个简单的drop-in富文本编辑器组件,ProseMirror可能不是您需要的。(我们希望这些组件能够构建在它之上。)该库针对要求苛刻,高度集成的用例进行了优化,但代价是简单。“

2. Prosemirror的模式比Quill更灵活。Prosemirror似乎允许任何东西,而Quill强加一些约束。例如,Quill要求所有节点都是叶子,不能有子节点或容器,并且必须至少有一个子节点。Prosemirror中不允许有可以选择生成子节点的节点。

根据我的经验,Quill强加的约束导致跨浏览器的更一致和无错误的体验。

3. Quill更受战斗考验。Slack,Salesforce,LinkedIn,Intuit和许多其他人在他们面向用户的主要生产产品中使用Quill,而不是仅限内部员工的工具。Prosemirror与纽约时报有一个良好的开端,但目前在采用方面存在很大差异。