架构
模块之间怎么说话
URL、Target-Action、协议匹配,都能解开直接 import。差别在编译检查和你要不要动态跳转。
组件化通讯就三件常见的事:用字符串 URL 找模块,用约定好的 Target 和 Action 做运行时调用,或者用协议去匹配一个实现。先选你缺的是哪一种能力,再选方案。
三种
- URL 适合运营活动、和 H5 共用一套地址、从外面打开 App。参数基本是字符串,写错要到运行时才知道。
- Target-Action 用运行时按名字找类和方法。调用方不 import 目标模块。名字写错同样要跑起来才爆。
- 协议匹配把“我需要什么”写成协议,实现在别的模块注册进来。参数有类型,重构时编译器能帮你。动态替换不如 URL 自由。
纯 App 内的页面跳转,优先协议或直接的路由方法。需要“今天这个活动用网页、明天换原生”这种开关,再在外面加一层 URL,解析之后还是进同一个路由方法。不要让每个按钮都拼字符串。
组件和模块
组件是被很多人用的基础能力,比如网络和图片,纵向复用。模块是一块业务,比如订单和消息,横向切开。业务模块不要互相 import。基础组件可以被模块依赖,但不要反过来依赖某个业务。