返回

深入剖析 Prosemirror schema,掌控文档结构与元素行为

前端

Prosemirror schema 介绍

Prosemirror schema 是一个 JavaScript 对象,它了 Prosemirror 文档的结构和元素的行为。schema 包含以下几个部分:

  • nodes: 了文档中可以出现的元素类型。
  • marks: 描述了可以应用于元素的格式。
  • topNode: 描述了文档的根元素。

节点 (nodes)

节点是 Prosemirror 文档的基本构建块。每个节点都有一个类型,它决定了节点的行为和外观。例如,段落节点是一个块级元素,它可以包含其他元素,如文本、列表和图像。文本节点是一个内联元素,它只能包含文本。

标记 (marks)

标记可以应用于节点,以改变节点的外观或行为。例如,粗体标记可以应用于文本节点,以使文本加粗。链接标记可以应用于文本节点或段落节点,以使节点可点击并链接到另一个文档。

顶层节点 (topNode)

顶层节点是 Prosemirror 文档的根元素。它必须是块级元素,并且只能有一个。顶层节点通常是段落节点或 div 节点。

Prosemirror schema 的作用

Prosemirror schema 在 Prosemirror 编辑器中起着至关重要的作用。它决定了以下几个方面:

  • 文档的结构: schema 定义了文档中可以出现的元素类型,以及这些元素如何组合在一起。
  • 元素的行为: schema 定义了每个元素的行为,例如,段落节点可以包含其他元素,而文本节点只能包含文本。
  • 标记的应用: schema 定义了哪些标记可以应用于哪些元素。

如何使用 Prosemirror schema

要使用 Prosemirror schema,您需要在创建 Prosemirror 编辑器时将其作为参数传递。例如:

const editor = new Prosemirror.Editor({
  schema: schema,
  container: document.querySelector('#editor')
});

您还可以使用 schema.nodesschema.marks 属性来获取节点和标记的列表。例如:

const nodes = schema.nodes;
const marks = schema.marks;

总结

Prosemirror schema 是一个强大的工具,它可以帮助您创建具有复杂结构和行为的文档。如果您正在使用 Prosemirror 编辑器,那么了解 schema 是非常重要的。