V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
moment082
V2EX  ›  程序员

如果你正在使用 Tiptap 做协同编辑器,那么我建议你使用 Monorepo 架构是最舒服的选择

  •  1
     
  •   moment082 · Feb 5 · 1119 views
    This topic created in 80 days ago, the information mentioned may be changed or developed.

    昨天把 DocFlow 重构成了 Monorepo 架构,主要是为了解决协同编辑中的 Schema 同步问题。

    20260205105346

    项目使用 Tiptap 做协同编辑,自定义节点较多,而 Yjs 传递的是二进制数据。像警告框 Alert 这类自定义节点,在前端是具体的 UI 组件,但在 Hocuspocus 后端必须有对应的 Transformer 逻辑,才能将二进制数据准确还原成 JSON 或 HTML 。

    没有 Monorepo 时,每加一个新功能(如 alert.ts ),都要在前端和后端分别维护一套 Schema 。一旦漏掉同步,后端解析时就不认识这个节点,辛辛苦苦存的数据可能直接丢失。

    采用 Monorepo 后,架构清晰多了:

    • 原子化解耦:每个自定义节点如 @syncflow/alert 都是独立包,职责单一,
    • 逻辑共享:transformer 包统一组装这些节点,导出一个全能的解析器
    • 多端复用:前端编辑器用它来渲染,后端 Hocuspocus 用它做数据转换

    最终实现一套 Schema 定义,全链路通用,改一下 alert.ts 的规则,全端自动生效,维护效率大幅提升。

    项目地址: https://github.com/xun082/DocFlow/tree/main/packages

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   938 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 22:39 · PVG 06:39 · LAX 15:39 · JFK 18:39
    ♥ Do have faith in what you're doing.