為何要組件化開發(fā)答憔,組件化方案有哪些
講述開始之前秕狰,你有沒想清楚你為何選擇組件化開發(fā),究竟他能給你帶來哪些好處,對你能提升多少麸塞,對團(tuán)隊(duì)直接有什么優(yōu)勢?椰憋,比如公共組件下沉波势,通用的style,res等相通用的資源文件管理笆檀,網(wǎng)上有很多組件化方案忌堂,該如何選擇,這是一條很難的決定酗洒,
組件化模塊劃分
其實(shí)從上圖中你就可以發(fā)現(xiàn)士修,組件化枷遂,從上下來分一共四層,APP殼工程棋嘲、常規(guī)業(yè)務(wù)組件層酒唉、基礎(chǔ)業(yè)務(wù)組件層、基礎(chǔ)功能組件層沸移。我們從下往上一層層劃分
基礎(chǔ)功能組件層
基礎(chǔ)組件層很好理解就是存放公共庫痪伦,方便進(jìn)行管理,他并不管理你外部要做什么雹锣,其實(shí)我們進(jìn)行對基礎(chǔ)庫劃分网沾,又很難的選擇,那些該下沉到基礎(chǔ)庫笆制,那些該放到組件層绅这,進(jìn)行擴(kuò)展。說一下我的思路吧在辆。
1.網(wǎng)絡(luò)請求
2.公共工具類
3.基礎(chǔ)ui
4.BaseActivity/BaseFragment等
這就是基礎(chǔ)庫证薇,當(dāng)然你還可以根據(jù)通用性,記性工具類匆篓,下沉浑度。但是這個(gè)選擇要想清楚。你會(huì)問那些算是公共工具類鸦概,這個(gè)選擇箩张,其實(shí)很難決定。評論區(qū)見
基礎(chǔ)業(yè)務(wù)組件層
其實(shí)我管這層叫做窗市,功能組件擴(kuò)展層先慷,為什么這么說呢,比如我們要增加一個(gè)統(tǒng)計(jì)功能咨察,每個(gè)頁面都需要论熙,那你還不能修改base,那我為何不在base 上擴(kuò)展一層摄狱,來供組件依賴脓诡。
那就是他有些擴(kuò)展工具,例如
1.統(tǒng)計(jì)模塊
2.分享模塊
3.上傳組件模塊
4.圖片預(yù)覽模塊
5.錄制相關(guān)模塊
6.地圖模塊
7.更多擴(kuò)展等等
常規(guī)業(yè)務(wù)組件層
就是我們的業(yè)務(wù)層了媒役,業(yè)務(wù)層分為很多模塊祝谚,簡單說幾個(gè)模塊吧
1.這里就不做具體說明,根據(jù)情況劃分酣衷,我們按照功能模塊來進(jìn)行劃分交惯,例如登錄注冊,個(gè)人中心,消息模塊商玫,音視頻箕憾,直播模塊等。他可以單獨(dú)運(yùn)行和打包在手機(jī)中進(jìn)行測試拳昌。
APP殼工程
殼工程依賴了需要集成的業(yè)務(wù)組件袭异,它可能只有一些配置文件,沒有任何代碼邏輯炬藤。根據(jù)你的需要選擇集成你的業(yè)務(wù)組件御铃,不同的業(yè)務(wù)組件就組成了不同的APP。
組件之間必須遵循以下規(guī)則:
只有上層的組件才能依賴下層組件沈矿,不能反向依賴上真,否則可能會(huì)出現(xiàn)循環(huán)依賴的情況;
同一層之間的組件不能相互依賴羹膳,這也是為了組件之間的徹底解耦睡互;
組件化方案
已經(jīng)有很多成熟的組件化框架供我們選擇,也可以參考成熟的組件化搭建一套完整的組件化方案陵像。以下我列舉一些進(jìn)行參考:
阿里的atlas
一個(gè)很值得大家學(xué)習(xí)的項(xiàng)目就珠,和架構(gòu)方案MvpArms
組件化cc,這是我覺得很好的一套組件化方案cc
結(jié)束之前給你們貼個(gè)博客醒颖,我覺得講的挺好淺談項(xiàng)目架構(gòu)重構(gòu)之路——組件化與MVP
到這里就結(jié)束了妻怎,最后貼出來我司的組件化整體模塊。
上圖我要說一下因?yàn)槲覀償?shù)據(jù)統(tǒng)計(jì)是自己傳日志文件泞歉,就在base上進(jìn)行擴(kuò)展逼侦,方便管理,并且不修改base任何代碼腰耙,進(jìn)行功能拆分榛丢,并且放一些公共模塊。例如CC包挺庞,就是模塊之間進(jìn)行通訊的一個(gè)橋梁晰赞,因?yàn)槲覀儾⑽催x擇阿里ARouter路由模式,commonLibrary挠阁,中也放了一些通用的dialog 和工具。
resLibrary就是整合資源管理溯饵,將所有的style侵俗,color,anim丰刊,drawble統(tǒng)一放在資源lib中進(jìn)行管理隘谣。
app中包含推送消息分發(fā),包含三方庫的初始化,和Main主模塊寻歧,你會(huì)問道m(xù)ianActivity的fragment去哪里了掌栅,其實(shí)在個(gè)模塊下。