我尝试将EditorJs的输出转换为Html。EditorJs输出“干净”的数据如下:
{
"time": 1589987527499,
"blocks": [
{
"type": "embded",
"data": {
"service": "youtube",
"source": "https://www.youtube.com/watch?v=JbqGYgI3XY0",
"embed": "https://www.youtube.com/embed/JbqGYgI3XY0",
"width": 580,
"height": 320,
"caption": ""
}
},
{
"type": "image",
"data": {
"file": {
"url": "http://localhost/uploads/images/1.jpg"
},
"caption": "",
"withBorder": false,
"stretched": false,
"withBackground": false
}
},
{
"type": "header",
"data": {
"text": "test",
"level": 2
}
}
],
"version": "2.17.0"
}
字符串
我怎样才能转换到原始HTML?我必须手动转换吗?
9条答案
按热度按时间sqserrrh1#
'editorjs-html'库可以帮助您将Json数据解析为HTML。它提供了一些基本的解析器函数,但也允许您重写和定义自己的解析器函数。它独立于框架,因此您可以在任何地方使用它。
README存储库提供了一些有用的信息,但您也可以在这里看到一些示例,https://medium.com/@pavittarx/rendering-json-from-editor-js-to-html-bfb615ee78c4
zour9fqk2#
我找到了一个函数来做它,我自己做了一个修改。我认为它可以改进,但现在这是我得到的最好的。
字符串
jdzmm42g3#
Editorjs输出干净的数据,维护者还没有实现
readOnly
功能,以获得HTML。所以,唯一的解决方案是自己编写一个转换功能,但我已经为此创建了一个包。editorjs-parser。它支持大多数块类型,你也可以为任何类型的块提供自己的自定义解析器。它支持:它也是可配置的。
xkftehaa4#
您可以使用此npm install @son_xx/editor-js-parser
r7s23pms5#
我不知道为什么需要转换为html,你可以在服务器上有干净的数据,现在通过编辑器js将其呈现为readOnly
默认readOnly属性为
false
。以下是editorjs check this html提供的示例html文件
备注:既然我来到这个问题唯一的原因是早期的editorjs没有只读模式.目前它支持只读模式.所以我的要求得到满足.我的需要得到满足.如果有任何其他原因.上述答案看起来很好.
olmpazwi6#
我使用了一个npm包editorjs-react-renderer,事实证明它非常有用,也很容易使用。
字符串
现在通过以下方式安装软件包:
型
然后在相应的文件中导入以下内容
型
或
型
或者,如果你得到了类似Window is not defined的错误,或者你正在使用React/Next JS,使用这个方法导入
型
最后,使用上述格式和输出组件的data={}对象从JSON呈现HTML
型
可用的软件包是EditorJS-React Renderer (ERR),下面是一个非常好的by shucoll演示
zu0ti5jz7#
你需要手动转换它,但我会创建一个类似于引擎的东西,它有基于“类型”的组件,例如,如果它是type:image,它会呈现一个组件,显示来自“data.file.url”的图像,你也可以向这个图像组件添加更多功能,你可能想要一个标题,然后你就有了那个数据。
“embed”类型也是如此,这个类型将有一个“child”组件,它根据“data.service”条件进行渲染,在本例中是YouTube,然后它将使用“data.source”源创建一个嵌入的YouTube视频。
这可能也有帮助:https://github.com/codex-team/editor.js/issues/676
ckocjqey8#
已经有很多解决方案了,但我很乐意用“我自己的”来贡献。
这是另一个项目的分支,它添加了对新块的支持,例如:
https://www.npmjs.com/package/@herii/editorjs-parser
您可以使用
yarn
或npm
安装它,这取决于您:字符串
Here是必须传递给parser.parse()的数据的一个示例。
这里有一个linkTool的例子,这是我添加的一个新的块(HTML是由这个解析器生成的,样式显示在我创建的sandbox中)。
x1c 0d1x的数据
希望对你有帮助!
8e2ybdfx9#
您可以使用
editorjs-html
包将原生editorjs JSON内容转换为HTML。我为此创建了一些实用程序:
字符串
要使这些函数正常工作,请确保首先安装该软件包:
型