模块化的一些思考

1. 方案设计

模块化工作主要包括这几个方面:

  • 模块划分及依赖原则
  • 模块注册和生命周期
  • 路由
  • 模块版本管理和打包
  • 资源访问
  • 一致的模块化工作流程

1.1 模块划分及依赖原则

把模块分为3类:

  • 基础模块
  • 基础业务模块
  • 业务模块

并且约定:

  • 基础模块可以被任何其他模块依赖
  • 基础业务模块可以被业务模块依赖
  • 业务模块不可以被依赖,只能通过解耦合的通信方式交互
3ELl5o

1.2 模块注册和生命周期

这里借鉴了BeeHive 方案,模块统一管理并定义生命周期(onInit/onMount/onUnmount)。并且hook了应用生命周期,这样模块可以在内部响应系统回调,不必去AppDelegate里面叠加代码了。

同时支持了应用通用事件的派发和监听,比如:登录/登出,首个vc的创建/显示,隐私协议同意事件等等。

1.3 路由

提供2种路由方式:

  1. url:通过统一的url跳转,支持应用内页面打开和数据传递,也能够支持跨app调用。

    Jgor7Q
  2. protocol:把key和一个实现了protocol的实例绑定,支持更复杂的参数传递。

    Zauh9W