iOS組件化初探

為什么要組件化

隨著App的快速迭代与柑,業(yè)務(wù)模塊越來越復(fù)雜流炕,開發(fā)人數(shù)越來越多澎现。傳統(tǒng)的開發(fā)模式會導(dǎo)致代碼管理混亂,發(fā)布每辟、集成剑辫、測試越來越麻煩,當(dāng)項目越來越大的時候渠欺,你會發(fā)現(xiàn)以下一系列問題:

  • 代碼編譯起來非常慢妹蔽,每次編寫代碼后需要拉下別人所有更新,然后再次提交挠将,可能還有沖突需要解決胳岂,即時你只是改動了一兩行代碼。
  • 代碼耦合嚴(yán)重舔稀,各個模塊間相互導(dǎo)入乳丰,牽一發(fā)而動全身。

如何解決這些問題呢内贮,自然是將整個項目以業(yè)務(wù)功能和基礎(chǔ)功能進(jìn)行拆分产园,單獨制作成一個個的小組件,每個組件單獨管理夜郁,最后由整個主工程統(tǒng)一集成所有組件什燕,這就是組件化的基本思路。
組件化的優(yōu)點:

  • 加快編譯速度竞端,可以把不會經(jīng)常變動的組件做成靜態(tài)庫屎即,同時每個組件可以獨立編譯,不依賴于主工程或者其他組件
  • 每個組件都可以選擇自己擅長的開發(fā)模式(MVC / MVVM / MVP)
  • 可以單獨測試每個組件
  • 多條業(yè)務(wù)線可以并行開發(fā)事富,提高開發(fā)效率

iOS里面的組件化主要是通過cocopods把組件打包成單獨的私有pod庫來進(jìn)行管理技俐,這樣就可以通過podfile文件,進(jìn)行動態(tài)的增刪和版本管理统台。

首先我們要解決的問題是如何對業(yè)務(wù)模塊進(jìn)行拆分雕擂,這個問題沒有什么標(biāo)準(zhǔn)答案,畢竟每個app的業(yè)務(wù)都不盡相同饺谬,做到拆分出的單元盡量只對應(yīng)一個功能即可,然后將這些小的功能單元再次組合為一個更大的功能單元谣拣。

如圖募寨,可供參考


圖片引自網(wǎng)絡(luò),侵刪

理論說完了森缠,接下來就是具體的代碼實操了

制作本地pod工程拔鹰,即組件

1. 創(chuàng)建本地項目

  • 打開命令行,進(jìn)入你需要創(chuàng)建項目的文件夾下
cd /Users/sure/Desktop/iOS/XASpec
  • 創(chuàng)建工程
pod lib create XAGuidePage 
根據(jù)提示,生成pod工作模板
  • 打開項目文件夾里面的Example文件夾下的工程贵涵,可以看到pods里面列肢,有個ReplaceMe的文件恰画,意思就是替換它,換成我們自己需要對外提供的類瓷马。


    工程結(jié)構(gòu)
  • 右鍵show in finder拴还,在finder中將我們自己的類復(fù)制進(jìn)去,刪掉ReplaceMe


    操作截圖
  • 關(guān)掉項目欧聘,打開命令行片林,cd到XAGuidePage文件夾下的Example文件夾下,執(zhí)行
pod install
操作截圖

重新打開項目,就能看到文件出現(xiàn)Pods下的Development Pods下面啦


操作截圖

可以通過以下方式添加依賴怀骤,注意:如果是發(fā)布到GitHub上的庫费封,它依賴的庫,必須是在GitHub上發(fā)布的蒋伦,不可以依賴本地庫


添加依賴

添加依賴
  • 然后再Example文件夾下執(zhí)行弓摘,即可添加依賴
pod install

安裝依賴庫

  • 到這一步,本地庫就已經(jīng)基本完成啦(如果想要引用這個本地pod庫痕届,將本地庫復(fù)制到你工程文件下韧献,在主工程Podfile里面加入pod 'XAGuidePage', :path => './XAGuidePage'即可,注意引用時不要采用絕對路徑來引用爷抓,這樣別人拉取代碼執(zhí)行pod install時會出問題势决,應(yīng)該采用相對路徑的形式引用,這里path的值應(yīng)該填寫本地庫podspec文件所在的文件夾蓝撇,../上層文件夾果复,./本層文件夾(即Podfile所在文件夾),自己填寫一下路徑執(zhí)行pod install即可)
    可參考我的這篇文章

同理渤昌,炮制出多個組件庫虽抄,組件間解耦可采用CTMediator框架進(jìn)行。
最后項目的結(jié)構(gòu)應(yīng)該是這樣独柑。

截圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迈窟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子忌栅,更是在濱河造成了極大的恐慌车酣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件索绪,死亡現(xiàn)場離奇詭異湖员,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瑞驱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門娘摔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唤反,你說我怎么就攤上這事凳寺⊙冀颍” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵肠缨,是天一觀的道長逆趋。 經(jīng)常有香客問我,道長怜瞒,這世上最難降的妖魔是什么父泳? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮吴汪,結(jié)果婚禮上惠窄,老公的妹妹穿的比我還像新娘。我一直安慰自己漾橙,他們只是感情好杆融,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霜运,像睡著了一般脾歇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上淘捡,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天藕各,我揣著相機(jī)與錄音,去河邊找鬼焦除。 笑死激况,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膘魄。 我是一名探鬼主播乌逐,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼创葡!你這毒婦竟也來了浙踢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤灿渴,失蹤者是張志新(化名)和其女友劉穎洛波,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骚露,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡蹬挤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荸百。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闻伶。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡滨攻,死狀恐怖够话,靈堂內(nèi)的尸體忽然破棺而出蓝翰,到底是詐尸還是另有隱情,我是刑警寧澤女嘲,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布畜份,位于F島的核電站,受9級特大地震影響欣尼,放射性物質(zhì)發(fā)生泄漏爆雹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一愕鼓、第九天 我趴在偏房一處隱蔽的房頂上張望钙态。 院中可真熱鬧,春花似錦菇晃、人聲如沸册倒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驻子。三九已至,卻和暖如春估灿,著一層夾襖步出監(jiān)牢的瞬間崇呵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工馅袁, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留域慷,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓司顿,卻偏偏與公主長得像芒粹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子大溜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容