項目架構(gòu)
一、基本配置
- IDE工具:Xcode
- 開發(fā)語言:object-C
- iOS系統(tǒng)支持:iOS10.0+
- iOS機型適配:iPhone6及之后機型(包含min\max\proMax)
- 開發(fā)模式:MVC+MVVM,以MVC為主蒋得,
在某些業(yè)務(wù)量比較多的模塊使用MVVM給控制器減重夭禽,增強代碼的閱讀性和可維護性,增強View的功能箍镜,數(shù)據(jù)雙向綁定。
二、開發(fā)流程
[圖片上傳失敗...(image-b4cce9-1634026127483)]
三匿乃、三方框架
1. 三方框架的管理
使用CocoaPods進行三方框架的統(tǒng)一管理,擁有安裝豌汇、卸載幢炸、更新、查看拒贱、搜索等很多實用的功能宛徊,能快速方便的解決項目的文件依賴和路徑管理
2. 具體三方框架
AFNetWorking
SDWebImage
MJExtention/JSONModel
MJRefresh
MBProgressHUD/SVProgressHUD
QMUIkit
YYKit
FMDB
IQKeyBordManager
Masonry/SDAutoLayout
WetCahtOpenSDK
AMapLoction
TZImagePackController
AliyunOSSiOS
四、模塊解耦(組件化)
模塊化方案MJGRouter
MGJRouter是一個單例類逻澳,使用前需要通過注冊組件闸天,調(diào)用方通過URL調(diào)用服務(wù)方頁面,通過路由表的映射關(guān)系進行關(guān)聯(lián)斜做,調(diào)用方可以傳入復(fù) 雜的參數(shù)苞氮、對象等。
基本跳轉(zhuǎn)主要是注冊組件瓤逼,調(diào)用openURl方法笼吟,傳入?yún)?shù)即可實現(xiàn)。
[MGJRouter registerURLPattern:@"ADM://shop/car" toHandler:^(NSDictionary *routerParameters) {
NSLog(@"admShopCarModuleRegisted",);
}];
[MGJRouter openURL:@"ADM://shop/car"];
現(xiàn)有功能可以組件化拆分的有:
- IM
- 購物車
- 下單
- 支付
- 訂單
- 地址
- 消息
五抛姑、代碼規(guī)范
赞厕、、定硝、
六皿桑、項目目錄與層級
目錄層級劃分的三個原則:易讀
、易維護
蔬啡、易擴展
模塊劃分
1. 應(yīng)用入口
AppDelegate是應(yīng)用的代理诲侮,應(yīng)用級的事件都委托它處理,包含啟動退出箱蟆、應(yīng)用前后臺狀態(tài)切換與監(jiān)聽沟绪、推送等事件,以及IM空猜、支付等第三方的回調(diào)绽慈,這使得AppDelegate內(nèi)代碼龐大恨旱,錯綜復(fù)雜,十分不利于閱讀和維護坝疼,因此新增一個AppDelegate+ServerClass
類別搜贤,用來處理生命周期之外的業(yè)務(wù),AppDelegate作為事件入口钝凶,具體實現(xiàn)直接調(diào)用類別里的方法仪芒,只為更清晰。
2. 主代碼模塊
主代碼模塊包含了應(yīng)用內(nèi)的功能模塊耕陷,根據(jù)底部Tab欄劃分并關(guān)聯(lián)實體文件夾掂名。每個模塊內(nèi)使用的是MVC模式,MVC是一種設(shè)計思想哟沫,并非死套路就三個文件夾饺蔑,根據(jù)實際需求適當(dāng)增加。
3. 管理模塊
Manager的定義是全局基礎(chǔ)服務(wù)南用,通常使用類方法或者單例來實現(xiàn)膀钠,主要包含對應(yīng)用掏湾、用戶的管理和服務(wù)裹虫,例如網(wǎng)絡(luò)狀態(tài)監(jiān)聽,廣告頁應(yīng)用介紹頁等融击。
4. 工具類
Tools文件夾內(nèi)主要包含全局通用工具筑公,來源于對三方框架的二次封裝,或是自己寫的工具類尊浪。
5. 基類
Base文件夾用來存放項目的基類匣屡,基類作用包含一些定制化的內(nèi)容,例如頁面樣式拇涤,空數(shù)據(jù)頁面等捣作,使用基類來實現(xiàn),可以統(tǒng)一控制鹅士,利于維護券躁,減少冗余,也為更清晰掉盅。
6. 全局宏定義 &其他文件
全局宏顧名思義是定義了一些全局通用宏也拜。這里定義了四個:
- PrefixHeader.pch
pch文件的內(nèi)容能被項目中的其他所有源文件共享和訪問。是一個預(yù)編譯文件趾痘。 - URLDefine.h(接口地址以及環(huán)境開關(guān))
- defineHeader.h(各種賬號信息)
- macroDefine.h(工具宏)
- notificaHeader.h(通知和存儲key)