前言
組件的劃分是在組件化之前最先要做的工作,也是非常重要的一環(huán)。組件劃分不細(xì)致會造成很多冗余代碼,或者劃分的太細(xì)致則會加倍增加工作量。換句話說,組件的劃分決定了整個工程的質(zhì)量。
我會從以下幾個方面來劃分組件:
- 基礎(chǔ)通用組件
- 基礎(chǔ)業(yè)務(wù)組件
-
UI公共組件 - 獨(dú)立業(yè)務(wù)組件
基礎(chǔ)通用組件的劃分
我們這么來理解基礎(chǔ)通用組件,變化不大,而且基本上每個項目都用到,項目中都要圍繞這些組件來實(shí)現(xiàn)業(yè)務(wù)功能的組件。例如我們在Pods中的AFNetworking、SDWebImage、FMDB,以及常用到的Category等。這些組件或許需要根據(jù)業(yè)務(wù)進(jìn)行一些二次封裝,但是每個項目中對它們的改動都不大。
使用第三方庫應(yīng)該盡量進(jìn)行二次封裝,封裝更適用于業(yè)務(wù)的組件,或者封裝成一個接口類,避免在換第三方庫的時候整個工程逐句代碼修改。下面有幾篇關(guān)于基礎(chǔ)組件封裝的文章供大家參考:
- 網(wǎng)絡(luò)層 HKHttpManager
-
URL跳轉(zhuǎn)路由 ALRouter -
Category的設(shè)計AOP代替繼承
基礎(chǔ)業(yè)務(wù)組件
我們可以將類似用戶行為統(tǒng)計、異常上報、推送服務(wù)、消息通道、支付、通用宏定義頭文件這種根據(jù)業(yè)務(wù)為基礎(chǔ)的服務(wù)SDK作為基礎(chǔ)業(yè)務(wù)組件,最好每個基礎(chǔ)業(yè)務(wù)組件都各分其責(zé),避免某些組件沒用到某些功能而造成代碼冗余。
UI公共組件
UI也有公共部分,建議在進(jìn)行開發(fā)之前可以和設(shè)計師取一下經(jīng),或許他們已經(jīng)做好了公共組件~這樣劃分根據(jù)他們的來就好了。

UI組件種類繁多,大家記得根據(jù) 公共 的原則來抽離就行..
獨(dú)立業(yè)務(wù)組件
根據(jù)業(yè)務(wù)的獨(dú)立性來劃分,例如我將我司的電商APP可以劃分為首頁組件、購物車組件、登錄注冊組件、訂單組件、用戶中心組件、商品組件。
獨(dú)立組件一定要保證獨(dú)立性,避免首頁含有商品組件等這種情況,每個組件都通過Route來交互,必要時提供對應(yīng)的接口。
總結(jié)
以上內(nèi)容總結(jié)為下圖,只要劃分清晰了才能提高代碼效率,組件化才有意義。

我的組件化系列文章:
《iOS組件化》組件化實(shí)踐
《iOS組件化》創(chuàng)建公共/私有 Pods
《iOS組件化》之使用AOP代替繼承
《iOS組件化》之 搭建適合業(yè)務(wù)的URL跳轉(zhuǎn)路由-ALRouter
《iOS組件化》之搭建基于AFNetworking的網(wǎng)絡(luò)請求框架