前述
體驗過牽一發而動全身,編譯5分鐘之后,每次發版本都要被測試一頓臭罵之后。組件化的心愈發強烈。
網上大多數關于組件化的文章或者材料都只闡述了Router
或者一些零散的東西。對于各個組件的劃分、和如何去一步步實踐組件化這些細膩坑多的活都沒有一個示例。本文就是一個相對完整的示例。
casa 的《iOS應用架構談》 ,Limboy的《蘑菇街 App 的組件化之路》 ,bang's的《iOS 組件化方案探索》一字一字啃了不止5遍,其他組件化的文獻也看了不少,看似不復雜的組件化,工作量卻很大,無從下手,遲遲不敢下手。
《在現有工程中實施基于CTMediator的組件化方案》鼓勵我們去做組件化,并且實現了基于CTMediator
的組件化方案,但是作為電商APP
的我們想用一套URL
跳轉方案,并且需要一份詳細的組件化實例。
組件化的實踐大概分為以下步驟:
- 組件的劃分
- 創建公共/私有 Pods
- 各組件的封裝
《iOS組件化》之使用AOP代替繼承、《iOS組件化》之 搭建適合業務的URL跳轉路由-ALRouter、《iOS組件化》之搭建基于AFNetworking的網絡請求框架 -
融合各組件
本文主要融合各組件
image.png
實踐
在創建HomeModuleDemo
之前,我已經做了這兩件事情:
- 將
HomeModule
用到的ALRouter、 HKHttpManager支持Cocoapods
- 確定工程架構,文件目錄結構
HomeModuleDemo
是首頁模塊,我部署在coding
的私有庫上,GitHub
上也有源代碼
MainProjectDemo
是主工程,GitHub
在這里
在創建MainProjectDemo
,將HomeModuleDemo
Pod
進來之后新建ALRouter.plist
,將URL
和className
填入
route.png
在AppDelegate
中調用loadConfigPlist
方法,傳入URL
即可得到對應的ViewController
。
注意
- 組件與主工程之間不可以存在相同名字的類,不然編譯會報錯
- 如果想讓組件
Pod
進來之后保留目錄層級,subspec
可以實現 - 組件上傳到
Pods
時盡量簡化
結語
劃分組件 -> 封裝各類組件 -> 創建Pods
-> 融入主工程,組件化的大量工作在封裝和創建Pods
。
許多博文都是關于CTMediator
路由這一層的組件化實踐,希望全新的URL
跳轉組件化實施可以幫助到你。
我的組件化系列文章:
《iOS組件化》組件的劃分
《iOS組件化》創建公共/私有 Pods
《iOS組件化》之使用AOP代替繼承
《iOS組件化》之 搭建適合業務的URL跳轉路由-ALRouter
《iOS組件化》之搭建基于AFNetworking的網絡請求框架