配置一个编辑器

只使用核心库来从零配置一个编辑器的话需要很多的代码。为了能够用一个预先配置好的编辑器快速开始, 我们提供了 prosemirror-example-setup 包, 它已经为你创建好了一系列的插件、基础设置,以及一个可配置的 schema。在这个示例中,我们使用 basic schema 以及使用 lists 来扩展该 schema。

import {EditorState} from "prosemirror-state"
import {EditorView} from "prosemirror-view"
import {Schema, DOMParser} from "prosemirror-model"
import {schema} from "prosemirror-schema-basic"
import {addListNodes} from "prosemirror-schema-list"
import {exampleSetup} from "prosemirror-example-setup"

// 将 prosemirror-schema-list 和基本 schema 放在一起形成一个支持 list 的 schema
const mySchema = new Schema({
  nodes: addListNodes(schema.spec.nodes, "paragraph block*", "block"),
  marks: schema.spec.marks
})

window.view = new EditorView(document.querySelector("#editor"), {
  state: EditorState.create({
    doc: DOMParser.fromSchema(mySchema).parse(document.querySelector("#content")),
    plugins: exampleSetup({schema: mySchema})
  })
})

上面代码的运行效果是这个样子:

Remix on Glitch

下面这些插件由上述的 example-setup 库所创建: