您将如何实现具有分页功能的富文本编辑器?

use*_*085 5 javascript pagination page-break rich-text-editor

作为一个更大项目的一部分,我将实现一个带分页的富文本编辑器。

由于以前在内容可编辑方面的糟糕经历,我更希望编辑器使用文档模型的方法(例如,散文镜像板岩)。

编辑器将只有少数用户可以插入的元素,因此功能的数量并不是很重要。

这里的难题是分页,不幸的是,我见过的其他看起来不错的编辑器都没有支持开箱即用。

我相信我有能力通过分页支持扩展现有的编辑器之一,但我也意识到这将需要大量的工作,所以我真的想从一开始就做出正确的决定。

根据所提供的信息,您会选择哪种方法来实现带分页的富文本编辑器?

关于扩展/使用各种编辑器的过去经验的技术细节和故事非常受欢迎。

Mik*_*ton 4

我们已经用 ProseMirror 完成了分页。这是一个痛苦的事情,但是有很多方法可以让它在模型中工作 - 直接建模页面,使用标记来指示页面边界等 - 只要你愿意编写自定义视图来支持你选择的表示。

关键决策集中于

  1. 您的分页需要有多互动?
  2. 您的格式有多流畅?

如果您同意“最终”正确的分页,并且您有固定每行字符的规则(基本上是伪等宽),那么您在 PM 中就可以了。如果您现在需要正确的分页并支持不同的字体,您将不得不依靠浏览器测量元素大小的能力,这意味着大量的“阴影”渲染。

您可能还应该预先意识到 ProseMirror 是一个相对较快的文档引擎,但对于编辑器内分页真正发挥作用的长文档,它仍然难以跟上工作负载。我希望核心可以用 WebAssembly 之类的东西重写,这应该为 ProseMirror 为此类东西所做的低级计算提供显着的加速。