2010年代的前端战场留下满地遗产。Angular、React、Vue、Svelte——如今的企业系统里,这些框架往往同时存在,各自守着一块业务。想把它们捏到一起用?常规做法是选一个框架统一迁移,周期长、风险高。另一种思路是让它们保持独立,通过编排层互相通信。这就是"弗兰肯斯坦会议室"项目的出发点:用 Native Federation 把异构应用塞进同一个浏览器标签。

这个演示项目模拟了典型的企业遗留环境。外壳是 Angular 写的日历组件,点击会议后,关联信息会同步到两个远程模块:Svelte 驱动的 Mermaid 流程图,以及 React 搭建的 Excalidraw 白板。切换会议时数据自动存取本地存储。三份代码库、三种框架、一个运行时——没有重写,只有拼接。

打开网易新闻 查看精彩图片

实现过程本身也值得细看。作者用 Claude Code 和 Codex 组成"代理 tandem",把需求规格拆成可验证的里程碑。每个里程碑再细化为具体任务,产出代码的同时留下任务日志:尝试了哪些方案、放弃了什么假设、哪些想法中途死亡。这些"负面信息"在普通提交记录里通常丢失,却成了复盘时最有价值的参考。

技术细节上有处小坑:Native Federation 的构建工具完成后不会自动释放进程。本地开发时按 Ctrl-C 就能解决,但代理工作流感知不到结束信号,会一直等待。作者用了一个包装脚本——先删除产物、启动构建、轮询检测产物生成,最后给整个进程组发送 SIGKILL。

核心架构围绕三个角色:Shell(宿主)、Remote(远程模块)、以及它们之间的通信总线。Shell 负责加载和编排,Remote 保持技术栈独立,总线处理跨框架的状态同步。这种模式下,团队可以各自维护代码库,用户却感知不到边界。

演示地址:lutzleonhardt.de/frankenstein-meeting-room,代码已开源。