Android技术交流ios技术交流

ios架构篇-1 项目组织架构

2021-03-09  本文已影响0人  浪人残风

关键字:项目组织架构 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需要消耗一定资源。

代码封装

  1. base类,主要分类三类
  1. 建议所有第三方库都需要再封装一层
  1. Assets.xcassets切图
    一般每个模块创建一个文件夹,然后再增加一个Common公共文件夹,尽可能切成等比例方形,某些特定场合才切成不等比图片,命名规则:统一命名成英文小写,多个单词间由下划线_分隔,同一项目不能出现同名切图,格式:模块名/页面名+功能名+状态名,如登陆页面的密码眼睛名称为login_account_enable.png,有条件的团队可以统一全部使用矢量图,如IconFont等

  2. 架构适用性
    此接口适合中型app项目,小型项目可以把ComponentNetwork、ComponentUI、ComponentUtils移植到ProjectApp的Component下,直接一个项目project+Pods就可以。大型项目的话可以把ProjecctApp里Modules下每个模块单独作为一个project,Common、Service、Database、Vendor各作为一个project,然后ProjectApp依赖各个project模块。如果需要对外提供SDK的同样需要再抽离出project。

  3. 架构分层
    不要被MVC、MVVM、VIPER等架构锁死,这些架构只是提供一些思路,学会了需要灵活运用,总结归纳,适合自己的才是最好的

项目源码:https://gitee.com/wrswenrisheng/project-app-ios.git

如果觉得可以就点个👍吧,欢迎粉丝收藏,土豪打赏,您的关注就是我们创作的动力!

读者有什么想看的相关技术篇章,欢迎评论留言!

QQ交流群:908058499

上一篇:无 目录 下一篇:ios架构篇-2 国际化多语言

上一篇 下一篇

猜你喜欢

热点阅读