ios架构篇-1 项目组织架构
关键字:项目组织架构 CocoaPod + 多项目级联 + xib + MVVM
整体项目结构:
ProjectApp 项目app project
Vendors 第三方.a、.framework库或源码
Resources 项目静态配置文件
Database 数据库文件夹,如CoreData
Component 此项目特定的组件
Base 此项目特定的基类,此基类基本上都要集成ComponentUI里的Base,如BaseNavController, BaseVC, BaseTabBarController
Util 此项目特定的工具类
UI 此项目特定的UI
Common 此项目特定的公共类
View 视图
WebVC 公用的WebViewVC,需要提供接口出来,不建议直接调用
Pay 支付,如微信、支付宝支付
Push 推送,如极光、友盟
DataCache 项目数据缓存,如图片缓存类
BugAnalysis app闪退奔溃统计
DataStatistic 用户数据行为埋点统计,如友盟、极光的数据统计
Map 高德、百度地图
Bluetooth 蓝牙
Wifi Wi-Fi
Styles 整体风格,存放颜色、字体、边距
CommonImport.swift 导入常用的库,这样就不用每次用的时候都需要导入了
Service 封装所有接口
Modules 项目模块
Home 首页模块
VC 存放VC、xib
Model 业务逻辑
View 视图
Entity 普工实体模型,即POJO
Mine 我的模块
Main 主模块
Login 登录模块
Assets.xcassets 切图
AccentColor
AppIcon
Pods
Podfile
ComponentNetwork 对第三方网络库对封装,如Alamofire
AFService
CPService.swift
ComponentUI 通用常用UI库的封装
Base
AlertView
ComponentUitls 通用常用工具类库
App
Array
Color
Date
Device
File
Image
Json
Lanuage
Object
Path
String
Validate
View
storyboard、xib的取舍
不采用单个或多个Storyboard,采用一个VC对应一个XIB方式,如果只需要适配iOS 13以后,可以直接使用swiftUI。storyboard很臃肿,而且打开特别慢,页面视图多了后很难查找,每次创建VC都需要通过storyboard,不够简明,团队编写极易代码冲突。也不建议界面UI实现都采用代码编写,纯代码编写效率低,维护困难,布局麻烦,代码量多。当然纯代码布局性能有提高,毕竟加载xib或storyboard需要消耗一定资源。
代码封装
- base类,主要分类三类
-
所有项目都通用都base,放到ComponentUI库base文件夹,主要封装一些打印信息、常用VC、View、UILabel、UIImage等功能
-
本项目特定的base,继承ComponentUI库base,定制项目通用的base,如通用导航栏navigationBar、tableView下拉刷新上拉加载更多等
-
某些页面共性封装,如同类产品详情页面、同类列表页面等
- 建议所有第三方库都需要再封装一层
-
iOS编程语言、系统更新都很快,第三方库不一定能及时更行
-
随着项目的扩张,某些第三方库已经无法满足需求,需要找替代品
-
第三方库功能过多,需要封装出项目特定的API接口
-
Assets.xcassets切图
一般每个模块创建一个文件夹,然后再增加一个Common公共文件夹,尽可能切成等比例方形,某些特定场合才切成不等比图片,命名规则:统一命名成英文小写,多个单词间由下划线_分隔,同一项目不能出现同名切图,格式:模块名/页面名+功能名+状态名,如登陆页面的密码眼睛名称为login_account_enable.png,有条件的团队可以统一全部使用矢量图,如IconFont等 -
架构适用性
此接口适合中型app项目,小型项目可以把ComponentNetwork、ComponentUI、ComponentUtils移植到ProjectApp的Component下,直接一个项目project+Pods就可以。大型项目的话可以把ProjecctApp里Modules下每个模块单独作为一个project,Common、Service、Database、Vendor各作为一个project,然后ProjectApp依赖各个project模块。如果需要对外提供SDK的同样需要再抽离出project。 -
架构分层
不要被MVC、MVVM、VIPER等架构锁死,这些架构只是提供一些思路,学会了需要灵活运用,总结归纳,适合自己的才是最好的
项目源码:https://gitee.com/wrswenrisheng/project-app-ios.git
如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!
读者有什么想看的相关技术篇章,欢迎评论留言!
QQ交流群:908058499
上一篇:无 目录 下一篇:ios架构篇-2 国际化多语言