1. 背景与痛点 (Situation & Task)
在项目(Zhanzhan)初期,为了追求业务的快速迭代,我们采用了传统的 Flutter 单体工程(Monolith)架构。所有的业务逻辑、网络请求、UI 组件和路由都高度集中在同一个 lib 目录下。
随着业务场景的不断丰富(涵盖了“办展”、“看展笔记”、“信息流”、“个人中心”等多个核心域),单体架构的弊端开始集中爆发,主要体现在:
代码边界模糊,陷入“面条代码”: 业务模块之间直接互相
import页面类,导致严重的隐式耦合。改动“商城”模块的代码,可能会意外引发“看展”模块的崩溃。依赖冲突频发,包管理失控: 全局共用一个
pubspec.yaml,第三方依赖版本牵一发而动全身,极大地限制了不同业务线的技术选型自由度。编译与代码生成效率低下: 在单体架构下,运行一次
build_runner生成代码需要遍历全局,耗时极长,严重影响研发心智和效率。
为了支撑中大型团队的协同开发,抹平不同业务模块的进度差,我们决定彻底打破单体架构,全面向 基于 Melos 的 Monorepo(单体仓库多包管理)架构 演进。