模塊化卖哎、組件化與插件化(1)

模塊化、組件化與插件化

  •   組件化 modularization债鸡、component
    
  •   模塊化 modularization
    
  •   插件 plug-in;plug-in component铛纬;plug-in module
    

什么是組件化modularization厌均? 將一部分業(yè)務(wù)代碼從主工程獨(dú)立出去,單獨(dú)編譯運(yùn)行告唆,最后再合并測(cè)試并發(fā)布的方案得到廣泛運(yùn)用棺弊。這就是組件化

1.實(shí)際項(xiàng)目中的組件化問題

  • 解決人多(更好的協(xié)作)、需求多(更好的功能模塊劃分)的問題擒悬;
  • 解決項(xiàng)目模塊間的代碼耦合問題模她;(堅(jiān)決抵制業(yè)務(wù)組件間代碼直接引用)

產(chǎn)品業(yè)務(wù)組件:(例如圈子、1元購懂牧、登錄侈净、客服MM等)

  • 業(yè)務(wù)功能間相對(duì)獨(dú)立,相互間沒有Model共享的依賴;
  • 業(yè)務(wù)之間的頁面調(diào)用只能通過UIBus進(jìn)行跳轉(zhuǎn)畜侦;
  • 業(yè)務(wù)之間的邏輯Action調(diào)用只能通過服務(wù)提供元扔;

在組件化 / 模塊化之前,蜂鳥商家版 App 的所有代碼 / 資源文件等都是在同一個(gè)主工程里的夏伊,只有 RN 倉庫或組內(nèi)公用私有庫等極少部分代碼游離于主工程之外摇展,所以在開發(fā)時(shí),每一次都要編譯整個(gè)項(xiàng)目的所有代碼溺忧,十分低效咏连。這個(gè)問題在獨(dú)立開發(fā)時(shí)還不是十分明顯,畢竟雖然項(xiàng)目大但是代碼只有一個(gè)人在提交鲁森,所以項(xiàng)目代碼量增加也不是那么夸張而且對(duì)項(xiàng)目發(fā)生的變化比較熟悉祟滴。但是當(dāng)多人協(xié)作開發(fā)時(shí),這個(gè)缺陷就暴露了出來歌溉,大家在各自開發(fā)不同的業(yè)務(wù)時(shí)垄懂,不僅要時(shí)刻和他人同步項(xiàng)目變化、讀懂他人代碼痛垛,還要每次編譯完整個(gè)項(xiàng)目才能對(duì)自己所做的一點(diǎn)修改進(jìn)行調(diào)試草慧,效率低下。

  • 項(xiàng)目臃腫不堪
  • 團(tuán)隊(duì)規(guī)模變化
  • 業(yè)務(wù)發(fā)展壓力
  • 代碼管理混亂

目標(biāo)

  • 加快編譯速度匙头,不用再編譯組件 / 模塊外沒有被依賴到的代碼漫谷;
  • 便于將每個(gè)模塊指定給不同負(fù)責(zé)人進(jìn)行管理;
  • 降低合并難度蹂析,減小沖突和出錯(cuò)概率舔示,提高業(yè)務(wù)開發(fā)效率;
  • 將 Swift 和 OC 代碼進(jìn)行分離电抚,便于進(jìn)一步 Swift 化工作的推進(jìn)惕稻;
  • 可為模塊編寫單元測(cè)試,提高工作效率蝙叛,同時(shí)方便測(cè)試人員進(jìn)行有針對(duì)性的測(cè)試俺祠。

目標(biāo)設(shè)定

  • 功能組件獨(dú)立:保證所有的底層功能組件從主工程抽出,獨(dú)立與主工程之外借帘,便于復(fù)用锻煌、業(yè)務(wù)模塊的調(diào)用;
  • 業(yè)務(wù)模塊劃分與拆解:將業(yè)務(wù)按對(duì)應(yīng)用途進(jìn)行劃分和拆解姻蚓,想辦法切斷各業(yè)務(wù)之間的強(qiáng)依賴宋梧;
  • 所有組件 / 模塊獨(dú)立編譯:所有功能組件和業(yè)務(wù)模塊能夠獨(dú)立于主工程進(jìn)行編譯,有各自的 Demo 工程狰挡;
  • CocoaPods 發(fā)布:在內(nèi)網(wǎng) GitLab 進(jìn)行發(fā)布捂龄,并且之后對(duì)每個(gè)模塊用 GitFlow 工作流進(jìn)行管理和后續(xù)發(fā)布工作释涛。

三. 計(jì)劃制定

組件,就是我們對(duì)功能的封裝倦沧,一個(gè)功能就是一個(gè)組件唇撬,數(shù)據(jù)庫、網(wǎng)絡(luò)展融、文件操作窖认、社會(huì)化分享等等這些功能都是組件。我們之所以要搞出組件的概念告希,是為了能夠讓我們的上層業(yè)務(wù)模塊能夠隨時(shí)依賴和調(diào)用這些基礎(chǔ)功能扑浸。組件基本上可以分為基礎(chǔ)功能組件、通用 UI 組件燕偶、基礎(chǔ)業(yè)務(wù)組件等這幾類喝噪。所以為了滿足上述要求,組件必須具有較高的獨(dú)立性指么、擴(kuò)展性以及復(fù)用性酝惧。

模塊,就是對(duì)一系列有內(nèi)聚性的業(yè)務(wù)進(jìn)行整理伯诬,將其與其它業(yè)務(wù)進(jìn)行切割晚唇、拆分,從主工程或原所在位置抽離為一個(gè)相對(duì)獨(dú)立的部分盗似。僅僅針對(duì)業(yè)務(wù)而言缺亮,比如說我們可以把訂單業(yè)務(wù)獨(dú)立為為一個(gè)模塊,可以把個(gè)人中心獨(dú)立為一個(gè)模塊桥言,把用戶登錄獨(dú)立為一個(gè)模塊等,在 App 中的體現(xiàn)就是一個(gè)個(gè)獨(dú)立的 Git 倉庫葵礼。模塊化的一個(gè)好處是用到時(shí)可以搭積木号阿,比如可以多個(gè)工程間復(fù)用同一個(gè)或幾個(gè)業(yè)務(wù)模塊,比如騰訊的 QQ 和 TIM鸳粉,除了 UI 界面外 TIM 顯然復(fù)用了大量現(xiàn)有的原 QQ 工程的業(yè)務(wù)模塊代碼扔涧,當(dāng)然,我們這里暫時(shí)并沒有這個(gè)需求届谈。

1. E1?.png
Pasted Graphic 2.png

看了這篇文章會(huì)給很多啟發(fā),明白了很多東西
http://www.cocoachina.com/articles/21967

模塊與組件

在一個(gè)項(xiàng)目中

個(gè)人理解

組件可以組成一個(gè)模塊

模塊之間進(jìn)行相互跳轉(zhuǎn)


模塊化開發(fā):按照項(xiàng)目業(yè)務(wù)模塊來劃分枯夜,將一個(gè)app按業(yè)務(wù)拆分為登
錄模塊、聊天模塊等等艰山,模塊化其中一個(gè)核心的目的就是代碼的高可
復(fù)用湖雹、高可維護(hù)和高可擴(kuò)展性能。

組件化開發(fā):對(duì)應(yīng)用功能的封裝曙搬,一個(gè)功能一個(gè)組件摔吏。比如網(wǎng)絡(luò)連接
交互組件鸽嫂、即時(shí)通訊IM組件、數(shù)據(jù)庫組件等征讲。是對(duì)模塊化更小的細(xì)
分据某。

最后總結(jié)一下
我認(rèn)為 組件化 還是模塊化
因?yàn)轫?xiàng)目開發(fā)的人數(shù)比較多,功能大多比較雜
因此基礎(chǔ)的東西 或者 模塊做成pod當(dāng)時(shí)引入 最為簡(jiǎn)單
但是要做成什么樣的 幾個(gè)模塊如何互調(diào)?是做成pod引入么? 下次再看看

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诗箍,隨后出現(xiàn)的幾起案子癣籽,更是在濱河造成了極大的恐慌,老刑警劉巖滤祖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷狼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氨距,警方通過查閱死者的電腦和手機(jī)桑逝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俏让,“玉大人楞遏,你說我怎么就攤上這事∈孜簦” “怎么了寡喝?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)勒奇。 經(jīng)常有香客問我预鬓,道長(zhǎng),這世上最難降的妖魔是什么赊颠? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任格二,我火速辦了婚禮,結(jié)果婚禮上竣蹦,老公的妹妹穿的比我還像新娘顶猜。我一直安慰自己,他們只是感情好痘括,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布长窄。 她就那樣靜靜地躺著,像睡著了一般纲菌。 火紅的嫁衣襯著肌膚如雪挠日。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天翰舌,我揣著相機(jī)與錄音嚣潜,去河邊找鬼。 笑死椅贱,一個(gè)胖子當(dāng)著我的面吹牛郑原,可吹牛的內(nèi)容都是我干的唉韭。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼犯犁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼属愤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起酸役,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤住诸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涣澡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贱呐,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年入桂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奄薇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抗愁,死狀恐怖馁蒂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜘腌,我是刑警寧澤沫屡,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站撮珠,受9級(jí)特大地震影響沮脖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芯急,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一勺届、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娶耍,春花似錦免姿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗜湃。三九已至奈应,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間购披,已是汗流浹背杖挣。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刚陡,地道東北人惩妇。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓株汉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親歌殃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乔妈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361