gpt4 book ai didi

prose-mirror - prosemirror : converting JSON output into HTML

转载 作者:行者123 更新时间:2023-12-01 13:18:37 51 4
gpt4 key购买 nike

我正在尝试将 ProseMirror 的 JSON 输出转换回 HTML(将它从一个数据库保存到另一个数据库)。我是 ProseMirror 的新手,我不确定我是否完全理解模型、状态和模式之间的关系。

从我阅读的内容来看https://github.com/ProseMirror/prosemirror/issues/455https://discuss.prosemirror.net/t/example-of-converting-between-formats-for-the-purpose-of-saving/424 ,

我应该首先基于基本模式创建一个新状态,然后使用 DOMSerializer 并将输出附加到一个临时元素(然后获取innerHtml)。
那个听起来是对的吗?任何帮助将不胜感激。

最佳答案

经过一番挖掘,这是我如何让它工作的:

  • 使用 .fromJSON 创建节点
  • 根据编辑器使用的模式制​​作 DOMSerializer
  • 将节点传递给序列化器

  • 我的代码如下。

    const { schema } = require("prosemirror-schema-basic")
    const { Node, DOMSerializer } = require("prosemirror-model")
    const jsdom = require("jsdom").JSDOM

    let dom = new jsdom('<!DOCTYPE html><div id="content"></div>')
    let doc = dom.window.document
    let target = doc.querySelector("div")
    //Demo JSON output from ProseMirror
    let content = {
    "doc": {
    "type": "doc",
    "content": [{
    "type": "paragraph",
    "attrs": {
    "align": "left"
    },
    "content": [{
    "type": "text",
    "text": "My sample text"
    }]
    }]
    },
    "selection": {
    "type": "text",
    "anchor": 16,
    "head": 16
    }
    }

    let contentNode = Node.fromJSON(schema, content.doc)

    DOMSerializer
    .fromSchema(schema)
    .serializeFragment(contentNode.content, {
    "document": doc
    }, target)

    console.log(doc.getElementById("content").innerHTML)
    //<p>My sample text</p>

    关于prose-mirror - prosemirror : converting JSON output into HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52228644/

    51 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com