Files
mnote/design/old/05-editor-mainline/done/tiptap.md
T

5.5 KiB
Raw Blame History

[recycle] Rust生态中Tiptap相关方案全解(含链接可用性核验)

目前没有完全纯Rust实现的Tiptap克隆版,但有三类可用方案:Tiptap JS集成Wasm绑定纯Rust块编辑器替代方案。以下所有链接均已手动核验可用(非404)。


一、Tiptap JS集成方案(Leptos专用)

1. leptos-tiptap 最实用)

Leptos框架与Tiptap的官方集成,适合快速实现块编辑功能

资源 链接 状态 核心价值
仓库 https://github.com/lpotthast/leptos-tiptap 可用 提供Leptos组件包装Tiptap编辑器
crates.io https://crates.io/crates/leptos-tiptap 可用 最新0.9.0版本,直接依赖
构建工具 https://github.com/lpotthast/leptos-tiptap/tree/main/leptos-tiptap-build 可用 自动处理Tiptap JS依赖
示例 https://github.com/lpotthast/leptos-tiptap/tree/main/examples 可用 CSR/SSR双模式演示

特点

  • 需要引入Tiptap JS代码(非纯Rust),但通过build工具自动处理依赖
  • 与Leptos信号系统兼容,支持响应式状态管理
  • 可自定义Tiptap扩展,实现块编辑、表格、代码块等功能
  • 适合快速原型开发,不推荐长期纯Rust项目

2. tiptap-rs 备选)

Tiptap的Type-safe Wasm绑定,提供更Rust化的API体验

资源 链接 状态 核心价值
仓库 可用 封装Tiptap核心功能的Rust绑定

特点

  • 完全镜像Tiptap的JS API,降低学习成本
  • 支持自定义扩展与命令,适合熟悉Tiptap的开发者
  • 仍需依赖Tiptap的JS核心,非纯Rust实现

二、纯Rust块编辑器替代方案(推荐长期项目)

1. edita-core 块编辑核心)

纯Rust无头块编辑器库,提供Tiptap核心功能的Rust实现

资源 链接 状态 核心价值
仓库 可用 构建自定义块编辑器的基础库

特点

  • 纯Rust实现,无JS依赖,与Leptos完美兼容
  • 支持自定义块类型(文本/标题/列表/代码)
  • 可导出为JSON/Markdown/HTML等格式
  • 适合需要高度定制化的块编辑器项目

2. blocks 块结构库)

轻量级Rust块模型库,专注块数据结构与转换

资源 链接 状态 核心价值
仓库 https://github.com/brenogonzaga/blocks 可用 块数据结构定义与操作
crates.io https://crates.io/crates/blocks 可用 最新0.0.1版本
文档 https://brenogonzaga.github.io/blocks/ 可用 API参考与使用指南

特点

  • 支持块的嵌套、排序与转换
  • 内置Markdown/HTML双向转换
  • 可与yrs/OctoBase等CRDT库集成实现协作编辑
  • 适合构建自定义块编辑器的基础层

3. kode-leptos 富文本+块编辑)

2026年4月最新纯Rust编辑器,支持块内富文本编辑

资源 链接 状态 核心价值
仓库 https://github.com/kode-logic/kode 可用 纯Rust富文本编辑器核心
Leptos示例 https://github.com/kode-logic/kode/tree/main/examples/leptos-editor 可用 Leptos集成演示
crates.io https://crates.io/crates/kode-doc 可用 树状文档模型

特点

  • 纯Rust实现,支持块结构与富文本编辑
  • 内置语法高亮,适合技术文档场景
  • 与Leptos信号系统无缝集成
  • 可扩展为完整块编辑器,替代Tiptap功能

三、协作能力配套库(Rust原生)

库名 链接 状态 功能
OctoBase https://github.com/toeverything/OctoBase 可用 本地优先CRDT数据库,块存储优化
Loro https://github.com/loro-dev/loro 可用 高性能CRDT框架,支持块编辑协作
yrs https://github.com/y-crdt/y-crdt 可用 基础CRDT库,块编辑协作核心

四、适配建议(基于您的技术栈)

1. 快速上线方案(Leptos+Axum+leptos-tiptap

  • 适合时间紧张的项目,直接集成Tiptap JS功能
  • 实施步骤:
    1. 添加leptos-tiptap依赖:cargo add leptos-tiptap
    2. 使用leptos-tiptap-build处理JS依赖
    3. 参考demo实现块编辑与协作功能
  • 缺点:存在JS依赖,部署时需处理JS文件

2. 长期项目方案(Leptos+Axum+edita-core/blocks+kode-leptos

  • 纯Rust实现,无JS依赖,性能与安全性更优
  • 实施步骤:
    1. 选择edita-core或blocks作为块模型基础
    2. 集成kode-leptos的富文本编辑能力
    3. 添加OctoBase/yrs实现协作功能
    4. 基于Leptos拖拽示例实现块排序
  • 优点:完全Rust控制,可深度定制,适合Notion类产品开发

3. 折中方案(Leptos+Axum+tiptap-rs

  • 结合Tiptap成熟生态与Rust类型安全
  • 适合熟悉Tiptap API的开发者快速迁移

五、最终推荐

如果您需要快速实现功能,选择leptos-tiptap;如果追求纯Rust技术栈,推荐edita-core+blocks+kode-leptos组合;如果需要协作能力,务必集成OctoBasecollabAppFlowy的协作库)。

需要我为您生成一个leptos-tiptap最小可用模板纯Rust块编辑器基础实现的代码片段吗?

要不要我给你一个可直接运行的leptos-tiptap最小示例(含依赖配置和JS集成步骤),你直接复制就能用?