乐于分享
好东西不私藏

关于我基于tiptap3开发富文本编辑器的体验

关于我基于tiptap3开发富文本编辑器的体验

当前 AI 生成式技术已深度融入公司文案创作流程,随之而来的是大量 AI 生成内容的精细化编辑与润色工作。

“ 针对AI环境下富文本编辑器需要具备极强的可扩展性,能够支持复杂的定制化功能的开发。

01

技术选型

在技术选型阶段,我们对比了多款主流开源富文本编辑器,发现它们在定制化深度、维护成本或跨框架兼容性方面各有短板。最终,我们选定 Tiptap 3 作为二次封装的基础。

我们曾考虑直接采用 GitHub 上基于 Tiptap 2 定制的 umo editor。然而,经过详细评估后,我们认为它存在两个主要问题:一是功能集过于庞大导致架构繁重,二是一些关键交互与我们的用户习惯不符。为了获得最佳的体验与性能,我们最终放弃了直接集成的方案,转而基于自身需求重新设计和实现了一个全新的编辑器。

02

选择原因

选择 Tiptap 3 的核心原因有几点:

功能开源更多:原付费的拖拽手柄、表情符号、数学公式、文件处理等功能全部转为开源免费。无需 DOM 元素即可创建编辑器实例,完美支持 Next.js、Nuxt 等 SSR 框架等等。

技术栈更先进:完成了从 Tippy.js 到 Floating UI 的升级,并进行扩展包统一整合,将分散的通用子组件整合为一体,极大提升了二次开发效率。

长期扩展性更好:采用框架无关的设计理念,完美兼容 React、Vue、Svelte 等前端技术栈,可实现一套样式与交互逻辑在多框架间复用,降低未来的技术维护成本。

03

实现过程

  1. 最终效果如下:
tiptap最主要的是创建组件节点进行处理对应展示样式,并在初始化tiptap进行注册。
首先安装对应的依赖包,注意版本一定要保持一致:
然后针对需要进行二次处理的插件进行定义(例如我的分栏定义):
然后就是进行toolbar的配置:
当前项目我已经发布到了npm上,可以安装体验:@white-give/editor 
npm i @white-give/editor yarn add @white-give/editor 
文档在 https://white-give.github.io/white-editor-doc/