iOS组件化-结构

126 阅读2分钟

在了解了如何制作一个组件后,我们来聊聊组件化的结构。

我们为什么要用组件化?

  • 拆分项目,使项目的结构更清晰
  • 每个组件能单独编译,减小整个项目的编译时间
  • 解耦,让每一个组件职责单一化

那么既然我们因为上面的原因使用组件化开发,那就得把各个组件和项目之间的结构梳理清楚,否则,非但解决不了我们的问题,还会使我们的问题更加复杂化,得不偿失。

首先我们要解决的便是组件之间的依赖关系,我认为,组件间的依赖是单向的,也就是说,组件只能依赖更底层的组件,而不能依赖同层的其他组件,如果有依赖同层的其他组件,那么这个功能就应该下沉。

我将组件分为三个层级。

最上层的当然就是我们的实际业务项目,他的主要功能就是实现那些不能被组件化的功能,是这个项目所特有的功能;其次就是依赖下层的组件库。

中间的一层是Common层,我称之为通用层。这一层主要存放的是一些公共的功能模块组件,例如:支付、分享、播放器、公共UI组件等等。

底层是foundation层,这一层是属于底层sdk组件。例如:埋点、日志收集、数据库、router和一些其他第三方库的隔离库等等。

整个组件化的项目结构如下图所示:

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/19fcc33bef2445cab620982c0b309edb~tplv-k3u1fbpfcp-zoom-1.image

当我们搭建好这样的一套组件化的结构之后,项目开发就变得简单起来了。

  • 可以单独编译每个组件库,缩短整个项目的编译时间。
  • 可以单独开发和维护某一个组件库,便于分组开发和单元测试。
  • 可以加快app的开发速度,在短时间内就可以组合出一个新的app。
  • 可以让项目变得一目了然,每个组件各司其职,便于调整功能和修复bug。

组件化的结构也搭建好了,接下来我们着重看看,组件间的通信。