组件化最佳实践
问题
组件化落地有哪些实践经验和常见问题?
答案
模块分层
关键原则
- 上层可以依赖下层,下层不能依赖上层
- Feature 模块之间不能直接依赖,通过路由/协议通信
- Core 层放可复用的业务无关能力
常见问题与解决
| 问题 | 解决方案 |
|---|---|
| 资源访问(图片、xib) | 使用 Bundle(for: Self.self) 定位模块 Bundle |
| 模块间传值 | 路由参数 / 共享协议 |
| 公共 Model | 放在 CoreInterface 层,各模块共享 |
| 模块独立运行 | 每个 Feature 提供 Demo Target |
| 循环依赖 | 提取公共协议到更底层 |
渐进式落地步骤
- 基础层抽取:网络、存储、日志等通用能力
- 定义接口层:模块间通信协议
- 逐个拆分 Feature:从最独立的模块开始
- 建立 CI 门禁:禁止违规依赖
常见面试问题
Q1: 组件化的优缺点?
答案:
- 优点:编译加速、团队并行开发、模块复用、独立测试
- 缺点:初期改造成本高、维护分仓增加运维工作、过度拆分反而增加复杂度
Q2: 何时该做组件化?
答案:当团队超过 5 人、代码量超过 10 万行、编译时间超过 5 分钟时,组件化的收益开始大于成本。