tiptap parseHTML renderHTML 使用

2024-09-08 12:28

本文主要是介绍tiptap parseHTML renderHTML 使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要在 Tiptap 中使用 parseHTML 和 renderHTML,可以通过创建自定义扩展来解析和渲染自定义的 HTML 元素。这两个方法允许你定义如何将 HTML 解析为 ProseMirror 文档节点以及如何将 ProseMirror 的文档节点渲染为 HTML。

1. parseHTML

parseHTML 用于将 HTML 元素解析为 ProseMirror 节点。在自定义扩展中,你可以定义如何将特定的 HTML 元素解析为 Tiptap 的文档节点。

2. renderHTML

renderHTML 用于将 ProseMirror 节点渲染回 HTML。你可以在自定义扩展中定义如何将 ProseMirror 节点渲染为 HTML 标签。

以下是一个简单的示例,展示了如何创建一个自定义扩展来解析和渲染一个自定义的 figure 元素:

import { Node, mergeAttributes } from '@tiptap/core';const FigureNode = Node.create({name: 'figure',group: 'block',content: 'inline*',// 使用 parseHTML 解析 HTMLparseHTML() {return [{tag: 'figure',},];},// 使用 renderHTML 渲染回 HTMLrenderHTML({ HTMLAttributes }) {return ['figure', mergeAttributes(HTMLAttributes), 0];},// 定义 ProseMirror schemaaddAttributes() {return {class: {default: null,},};},// 定义编辑器中的样式addNodeView() {return ({ node, HTMLAttributes }) => {const dom = document.createElement('figure');dom.classList.add(node.attrs.class);return {dom,};};},
});export default FigureNode;

要使用这个扩展,需要在 Tiptap 的编辑器配置中注册这个自定义节点:

import { Editor } from '@tiptap/core';
import StarterKit from '@tiptap/starter-kit';
import FigureNode from './FigureNode';const editor = new Editor({element: document.querySelector('#editor'),extensions: [StarterKit,FigureNode,],content: '<p>Hello World!</p>',
});

解析和渲染

  • 解析 HTML:
    当 Tiptap 编辑器加载带有 <figure> 标签的内容时,它会使用 parseHTML 方法来解析它,并将其转换为ProseMirror 的节点。
  • 渲染 HTML:
    当你将 ProseMirror 文档节点导出为 HTML 时,Tiptap 会调用 renderHTML 方法来生成最终的 HTML。

parseHTML 配置说明

parseHTML() {return [{tag: 'figure',},];
}

这里的 tag: ‘figure’ 告诉 Tiptap 当它在编辑器中遇到 <figure> 标签时,应当将其解析为自定义的 ProseMirror 节点。

HTML 内容加载/粘贴: 当你将一段包含 <figure> 标签的 HTML 内容加载到 Tiptap 编辑器中时,Tiptap 的解析器会检查所有的 parseHTML 配置。

匹配标签: 如果在 parseHTML 中找到了与 HTML 内容匹配的标签(如 <figure>),Tiptap 会使用该配置将该 HTML 标签解析为自定义节点(如 FigureNode)。

生成节点: Tiptap 会生成相应的 ProseMirror 节点,这些节点会存储在编辑器的文档结构中,并以内部的方式表示和操作。

例如,假设你在编辑器中粘贴以下 HTML:

<figure class="image"><img src="image.jpg" alt="An image">
</figure>

由于 parseHTML 方法配置了 tag: ‘figure’,Tiptap 会识别 <figure> 标签,并将其解析为相应的 ProseMirror 节点。这意味着在编辑器内部,这段 HTML 会被表示为一个包含 img 的 figure 节点。

高级配置
还可以为 parseHTML 返回的对象添加其他条件,例如根据特定的属性或类名进行匹配:

parseHTML() {return [{tag: 'figure.image',getAttrs: node => node.classList.contains('image') && null,},];
}

在上面的例子中,Tiptap 只会在 <figure> 标签上有 .image 类名时才解析它。

总结

parseHTML 中返回的对象在 HTML 内容解析过程中扮演着识别器的角色,Tiptap 通过这些对象来确定哪些 HTML 标签应该被转换为 ProseMirror 节点。这个过程使得你能够扩展和定制 Tiptap 编辑器,以支持特定的 HTML 结构和标签。

这篇关于tiptap parseHTML renderHTML 使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148107

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma