发布时间:2026/9/1 11:11:34
Tiptap 编辑器扩展集成:3 步接入官方扩展,10 行代码写出自己的 Mark Tiptap 编辑器扩展集成3 步接入官方扩展10 行代码写出自己的 Mark【免费下载链接】tiptapThe headless rich text editor framework for web artisans.项目地址: https://gitcode.com/GitHub_Trending/ti/tiptap当你想给页面加上加粗、标题和表格却发现现成编辑器自带的 UI 样式根本改不动——Tiptap 就是为解决这个问题而生一个 headless 富文本编辑器它自己没有任何界面所有能力都以扩展的形式独立注册由你自己拼装。Tiptap 扩展机制解决了什么问题Tiptap 构建在 ProseMirror 之上但它的核心packages/core/只负责管理文档状态和分发命令加粗、标题、列表这些能力全部拆成packages/下的独立包运行时由你注册。你可以把编辑器理解为一部空手机核心只是手机本身每个扩展都是一款单独安装的应用装哪些、怎么用完全由你决定。最小可用示例3 步跑通 Tiptap 编辑器先在你自己的项目里安装两个包tiptap/core提供编辑器核心tiptap/starter-kit是官方扩展包一次性带进加粗、斜体、标题、列表、撤销重做等 20 个最常用的扩展。npm install tiptap/core tiptap/starter-kit接下来在入口脚本里初始化编辑器。下面这段代码的全部作用就是把 StarterKit 注册进编辑器并写入一行初始内容。import { Editor } from tiptap/core import StarterKit from tiptap/starter-kit const editor new Editor({ element: document.querySelector(#editor), extensions: [StarterKit], content: p开始写作/p, })跑通后页面上#editor对应的元素变成可编辑区域选中文字按 Ctrl/CmdB 变粗行尾敲**文字**也会自动转成加粗——这些行为全部来自刚注册的扩展而不是编辑器内置的。Tiptap 扩展机制拆解读 3 处源码注册链路new Editor之后发生了什么你在代码里写new Editor({ extensions: [StarterKit] })实际触发的是packages/core/里的 ExtensionManager它遍历每个扩展依次收集addCommands、addKeyboardShortcuts、addProseMirrorPlugins等钩子的返回值汇总生成 ProseMirror 的 schema、输入规则和键位表最后挂载到编辑器上。所以加功能和改配置本质上是同一件事——注册一个带配置的对象。扩展源码解剖bold 的 5 个钩子打开 packages/extension-bold/src/bold.tsx你会发现一个 Mark 扩展由 5 处组成parseHTML声明哪些 HTMLstrong、b解析为 boldrenderHTML负责反向输出addCommands提供toggleBold命令addKeyboardShortcuts绑定快捷键addInputRules用正则匹配**文字**并转换成 bold mark。addKeyboardShortcuts() { return { Mod-b: () this.editor.commands.toggleBold(), } }这段就是你按 CtrlB 能加粗的直接原因——快捷键不是编辑器行为而是扩展自己注册的。按需裁剪用 configure 关掉不想要的 StarterKit 功能StarterKit 的addExtensions()逐个检查配置项值为false就不注册对应扩展。想去掉链接写一行StarterKit.configure({ link: false })想限制标题只留 1-3 级写heading: { levels: [1, 2, 3] }。不需要手动拆包也不用重写整个扩展列表。动手做4 步写出 Tiptap 高亮扩展目标官方扩展里没有文本高亮自己做一个——选中文字点按钮变黄色导出 HTML 时保留mark标签。第 1 步在项目里新建highlight.ts用Mark.create声明扩展注册对mark标签的解析和渲染规则。第 2 步在addCommands里加一个setHighlight命令供按钮调用。第 3 步把扩展和 StarterKit 一起注册进编辑器并补一条mark { background: #ffeb3b }的 CSS。第 4 步按钮的点击事件里调用editor.commands.setHighlight()。import { Mark } from tiptap/core // 步骤 1定义高亮 Mark解析并渲染 mark 标签 export const Highlight Mark.create({ name: highlight, parseHTML: () [{ tag: mark }], renderHTML: ({ HTMLAttributes }) [mark, HTMLAttributes, 0], // 步骤 2暴露命令供工具栏按钮调用 addCommands() { return { setHighlight: () ({ commands }) commands.setMark(this.name), } }, }) // 步骤 3与 StarterKit 一起注册并加上高亮样式 const editor new Editor({ element: document.querySelector(#editor), extensions: [StarterKit, Highlight], content: p选中我试试高亮/p, }) // 步骤 4按钮触发命令 document.querySelector(#hl).onclick () editor.commands.setHighlight()跑起来后选中几个字点按钮文字变黄再调editor.getHTML()输出里能拿到mark选中我/mark说明解析和渲染两个方向都通了。Tiptap 扩展高频报错快速定位现象Color 扩展设置了颜色DOM 里却没有任何样式变化。原因Color 只是往 TextStyle mark 上写 color 属性没注册 TextStyle 时 mark 无处挂载。解决在extensions里补上 TextStyle完整写法见 demos/src/Extensions/Color/。现象ModB 不触发加粗但直接调editor.commands.toggleBold()有效。原因快捷键由各扩展的addKeyboardShortcuts注册你手动拼 Document/Paragraph/Text 时漏了 Bold。解决把 Bold 加进 extensions或在自己的键位映射里手动绑定 toggleBold。现象clone 官方仓库后pnpm dev报 engine 版本错误。原因根package.json声明了node 24你本机 Node 版本偏低。解决升级到 Node 24 再启动例如nvm install 24 nvm use 24。读完之后做什么逐个浏览 demos/src/Extensions/每个目录都是官方扩展的可运行演示从Color和TableOfContents看起对照源码理解每个钩子。精读 packages/core/src/Extension.ts 和Mark.ts再回头重读 bold 扩展把5 个钩子从记忆变成条件反射。打开packages/extension-bold/__tests__/里的单测参考它的断言方式给你自己刚写的高亮扩展补上测试。如果你写出的扩展对别人也有用欢迎带到官方社区讨论。【免费下载链接】tiptapThe headless rich text editor framework for web artisans.项目地址: https://gitcode.com/GitHub_Trending/ti/tiptap创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/1 11:11:34

2024年Visio替代方案深度测评:Draw.io、Lucidchart、yEd与Excalidraw对比

如果你正在寻找一款能替代 Microsoft Visio 的绘图软件,大概率会遇到两个核心痛点:要么是 Visio 高昂的订阅费用让你望而却步,要么是免费工具功能简陋,画个稍微复杂的流程图或网络拓扑图就力不从心。网络上充斥着各种“Visio 激活…

2026/9/1 11:21:35

STM32读取BME280传感器完整教程:从ZIP资料到串口输出温湿压数据

简介:面向 STM32 嵌入式开发者,这份资料以 BME280 环境传感器为例,完整演示了通过 I2C 总线读取温度、湿度和气压数据的实现方法。压缩包共 11 个文件,包含 4 个 C 源码与 4 个头文件,覆盖 BME280 驱动、应用层封装及自…

2026/9/1 11:21:35

DLSS 不是黑盒:从 RTX 40 移植事件拆解超采样运行库架构

最近一段社区新闻,把英伟达 DLSS 和 RTX 40 系列又拉回了讨论焦点:有开发者借助泄露的驱动与 SDK 文件,把新一代 DLSS 组件移植到了 RTX 40 系列显卡上。标题里的“DLSS 5”并不是英伟达官方正式发布的命名,而是社区对新一代 DLSS…

2026/9/1 11:21:35

Arduino IDE装ESP32离线包:解决在线安装失败的完整指南

简介:面向在Arduino IDE中开发ESP32与ESP8266的创客和嵌入式工程师,这份离线整合包集中解决在线下载与更新速度慢、连接易中断的痛点。包体共2000个文件,以h/hpp两种头文件为主,涵盖芯片寄存器定义、USB与GPIO配置、RTC控制、加密…

2026/9/1 11:21:35

TMS320F28335 DSP入门指南:手册解读与CCS例程实战

简介:本资源是面向嵌入式开发初学者与电机控制、电力电子方向工程师的TMS320F28335全栈入门资料包,聚焦DSP硬件理解、外设驱动开发与CCS集成环境实操。压缩包共43.38MB,涵盖TI官方技术手册与应用手册(含ADC校准、ePWM占空比控制、…

2026/9/1 11:21:35

mpv 播放器配置实战:从安装到省 CPU 的 5 个关键设置

mpv 播放器配置实战:从安装到省 CPU 的 5 个关键设置 【免费下载链接】mpv 🎥 Command line media player 项目地址: https://gitcode.com/GitHub_Trending/mp/mpv 视频播到一半开始卡顿,或者播放 4K 片源时 CPU 占用直接飙满&#xf…

2026/8/31 1:05:20

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/1 8:27:47

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/1 7:04:43

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

2026/9/1 0:00:42

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/1 0:00:42

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/1 0:00:42

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…