在了解了如何制作一个组件后,我们来聊聊组件化的结构。
我们为什么要用组件化?
- 拆分项目,使项目的结构更清晰
- 每个组件能单独编译,减小整个项目的编译时间
- 解耦,让每一个组件职责单一化
那么既然我们因为上面的原因使用组件化开发,那就得把各个组件和项目之间的结构梳理清楚,否则,非但解决不了我们的问题,还会使我们的问题更加复杂化,得不偿失。
首先我们要解决的便是组件之间的依赖关系,我认为,组件间的依赖是单向的,也就是说,组件只能依赖更底层的组件,而不能依赖同层的其他组件,如果有依赖同层的其他组件,那么这个功能就应该下沉。
我将组件分为三个层级。
最上层的当然就是我们的实际业务项目,他的主要功能就是实现那些不能被组件化的功能,是这个项目所特有的功能;其次就是依赖下层的组件库。
中间的一层是Common层,我称之为通用层。这一层主要存放的是一些公共的功能模块组件,例如:支付、分享、播放器、公共UI组件等等。
底层是foundation层,这一层是属于底层sdk组件。例如:埋点、日志收集、数据库、router和一些其他第三方库的隔离库等等。
整个组件化的项目结构如下图所示:

当我们搭建好这样的一套组件化的结构之后,项目开发就变得简单起来了。
- 可以单独编译每个组件库,缩短整个项目的编译时间。
- 可以单独开发和维护某一个组件库,便于分组开发和单元测试。
- 可以加快app的开发速度,在短时间内就可以组合出一个新的app。
- 可以让项目变得一目了然,每个组件各司其职,便于调整功能和修复bug。
组件化的结构也搭建好了,接下来我们着重看看,组件间的通信。