V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
moment082
V2EX  ›  程序员

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

  •  1
     
  •   moment082 · 18 天前 · 824 次点击

    昨天把 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

    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   698 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:33 · PVG 03:33 · LAX 11:33 · JFK 14:33
    ♥ Do have faith in what you're doing.