打造自己的Tiptap富文本编辑器

154 阅读2分钟

前言

说起富文本编辑器,大多数都能想到Quill。但是他丑是真的丑,卡是真的卡。上次就想接入一个表格,不是报错就是样式太丑了。

后来我就找到了Tiptap,也有现成的npm包可以使用www.npmjs.com/package/rea… ,但是reactjs-tiptap-editor-playground.vercel.app/ 。在他的演示网址上的输入不知道为什么一卡一卡的。

最近小试了一下,打造自己的Tiptap富文本编辑器。

仓库地址:github.com/lzt-T/zt-re…

npm包地址:www.npmjs.com/package/zt-…

演示网址地址:tiptap.xjoker.top/

欢迎使用,bug随便提

正文

接下来看看有哪些东西

  • 🧩 双模式编辑体验:Notion 风格与 Headless 顶部工具栏模式
  • ✨ 丰富的文本格式化选项(粗体、斜体、下划线、删除线、行内代码)
  • 📝 支持标题(H1、H2、H3)、列表(有序/无序)、引用、可高亮代码块
  • 🖼️ 图片插入和管理(文件上传、URL 插入、缩放、对齐、描述)
  • 📎 附件上传与文件链接(支持文件选择、拖拽上传、类型限制)
  • 📊 完整表格支持(插入/删除行列、切换表头、单元格对齐、合并/拆分、删除表格)
  • ✅ 任务列表(带复选框的可交互待办事项)
  • 🎨 文本颜色和背景高亮
  • 🔢 数学公式支持(行内和块级 LaTeX 公式,基于 KaTeX)
  • ⚡ 斜杠命令(输入 / 快速插入各种内容块)
  • 🎯 气泡菜单(选中文本时显示格式化工具栏)
  • 💻 代码块操作(语言选择、复制、格式化、删除)
  • 🔄 撤销/重做支持
  • 📐 文本对齐(左对齐、居中、右对齐、两端对齐)
  • ↔️ 块级缩进(支持增加/减少段落与标题缩进)
  • ⬆️⬇️ 上标/下标支持
  • 🌓 浅色/暗色主题与只读禁用状态
  • 🌐 国际化(i18n):支持 zh-CN / en-US,工具栏、斜杠命令、弹窗与默认占位文案可本地化
  • 🧹 HTML 粘贴清洗(移除高风险标签、事件属性与常见 Office 污染)
  • 📄 HTML/DOM 转纯文本工具(与编辑器 getText() 一致)

两种模式

传统的富文本形式

image.png

使用命令菜单

image.png

主题的切换和国际化

image.png

image.png

行内公式和块级公式

image.png

编辑弹窗

image.png

表格

image.png

表格菜单栏 image.png

附件上传

image.png

上传弹窗 image.png

图片上传

image.png

上传弹窗 image.png

代码块

image.png

结语

感兴趣可以安装一下试试