模块化的一些思考
1. 方案设计
模块化工作主要包括这几个方面:
- 模块划分及依赖原则
- 模块注册和生命周期
- 路由
- 模块版本管理和打包
- 资源访问
- 一致的模块化工作流程
1.1 模块划分及依赖原则
把模块分为3类:
- 基础模块
- 基础业务模块
- 业务模块
并且约定:
- 基础模块可以被任何其他模块依赖
- 基础业务模块可以被业务模块依赖
- 业务模块不可以被依赖,只能通过解耦合的通信方式交互
1.2 模块注册和生命周期
这里借鉴了BeeHive 方案,模块统一管理并定义生命周期(onInit/onMount/onUnmount)。并且hook了应用生命周期,这样模块可以在内部响应系统回调,不必去AppDelegate里面叠加代码了。
同时支持了应用通用事件的派发和监听,比如:登录/登出,首个vc的创建/显示,隐私协议同意事件等等。
1.3 路由
提供2种路由方式:
-
url:通过统一的url跳转,支持应用内页面打开和数据传递,也能够支持跨app调用。
-
protocol:把key和一个实现了protocol的实例绑定,支持更复杂的参数传递。