前言
组件的划分是在组件化之前最先要做的工作,也是非常重要的一环。组件划分不细致会造成很多冗余代码,或者划分的太细致则会加倍增加工作量。换句话说,组件的划分决定了整个工程的质量。
我会从以下几个方面来划分组件:
- 基础通用组件
- 基础业务组件
-
UI
公共组件 - 独立业务组件
基础通用组件的划分
我们这么来理解基础通用组件,变化不大,而且基本上每个项目都用到,项目中都要围绕这些组件来实现业务功能的组件。例如我们在Pods
中的AFNetworking
、SDWebImage
、FMDB
,以及常用到的Category
等。这些组件或许需要根据业务进行一些二次封装,但是每个项目中对它们的改动都不大。
使用第三方库应该尽量进行二次封装,封装更适用于业务的组件,或者封装成一个接口类,避免在换第三方库的时候整个工程逐句代码修改。下面有几篇关于基础组件封装的文章供大家参考:
- 网络层 HKHttpManager
-
URL
跳转路由 ALRouter -
Category
的设计AOP代替继承
基础业务组件
我们可以将类似用户行为统计
、异常上报
、推送服务
、消息通道
、支付
、通用宏定义头文件
这种根据业务为基础的服务SDK
作为基础业务组件,最好每个基础业务组件都各分其责,避免某些组件没用到某些功能而造成代码冗余。
UI公共组件
UI
也有公共部分,建议在进行开发之前可以和设计师取一下经,或许他们已经做好了公共组件~这样划分根据他们的来就好了。
UI
组件种类繁多,大家记得根据 公共 的原则来抽离就行..
独立业务组件
根据业务的独立性来划分,例如我将我司的电商APP
可以划分为首页组件
、购物车组件
、登录注册组件
、订单组件
、用户中心组件
、商品组件
。
独立组件一定要保证独立性,避免首页
含有商品
组件等这种情况,每个组件都通过Route
来交互,必要时提供对应的接口。
总结
以上内容总结为下图,只要划分清晰了才能提高代码效率,组件化才有意义。
我的组件化系列文章:
《iOS组件化》组件化实践
《iOS组件化》创建公共/私有 Pods
《iOS组件化》之使用AOP代替继承
《iOS组件化》之 搭建适合业务的URL跳转路由-ALRouter
《iOS组件化》之搭建基于AFNetworking的网络请求框架