美文网首页Swift学习
ios swift 项目结构 架构

ios swift 项目结构 架构

作者: 荔枝lizhi_iOS程序猿 | 来源:发表于2022-10-19 18:00 被阅读0次

    关于 ios 项目架构 网上说的很多 ,mvc,mvp, mvvm, viper,但是很少有人 把整个项目里的把整个项目结构 拿出来说事,总是说,每个项目不一样 。 我想骂人, 很多项目其实 有很多共同之处的。我把我理解的项目结构贴出来,大家提提意见。from 荔枝

    image.png
    .
    ├── LZStructure
    │   ├── AppDelegate.swift
    │   ├── Assets.xcassets
    │   │   ├── AccentColor.colorset
    │   │   │   └── Contents.json
    │   │   ├── AppIcon.appiconset
    │   │   │   └── Contents.json
    │   │   └── Contents.json
    │   ├── Base.lproj
    │   │   ├── LaunchScreen.storyboard
    │   │   └── Main.storyboard
    │   ├── Category
    │   ├── Info.plist
    │   ├── Macro
    │   ├── Main
    │   ├── Resource
    │   ├── SceneDelegate.swift
    │   ├── Sections
    │   │   └── Home
    │   │       ├── Controller
    │   │       ├── Model
    │   │       ├── Presenter
    │   │       ├── View
    │   │       └── ViewModel
    │   ├── Tool
    │   ├── Vendor
    │   └── ViewController.swift
    ├── LZStructure.xcodeproj
    │   ├── project.pbxproj
    │   ├── project.xcworkspace
    │   │   ├── contents.xcworkspacedata
    │   │   ├── xcshareddata
    │   │   │   ├── IDEWorkspaceChecks.plist
    │   │   │   └── swiftpm
    │   │   │       └── configuration
    │   │   └── xcuserdata
    │   │       └── lizhi.xcuserdatad
    │   │           └── UserInterfaceState.xcuserstate
    │   └── xcuserdata
    │       └── lizhi.xcuserdatad
    │           └── xcschemes
    │               └── xcschememanagement.plist
    ├── LZStructureTests
    │   └── LZStructureTests.swift
    └── LZStructureUITests
        ├── LZStructureUITests.swift
        └── LZStructureUITestsLaunchTests.swift
    

    * AppDelegate:

    AppDelegate是程序入口,程序启动和显示逻辑都定义在内部,主要可以让开发人员快速找到代理文件并了解程序从启动到显示过程,也可以快速进行一些初始化测试。

    *Resource

    Resource: 此目录主要存放一些项目资源文件,如项目切图、音频、视频、coreData数据等。

    * SupportingFile

    SupportingFile: 项目配置文件。Info.plist、main.m、pch文件。

    *Category

    Category: 项目分类文件。

    *Macro

    Macro: 项目全局头文件、全局宏和常量

    *Network

    Network:网络相关 如 Moya封装

    *Main

    Main: 项目主要文件,全局共用文件以及一些基类

    *Tool

    Tool: 项目工具类,如网络请求工具,缓存工具,app管理工具等

    *Vendor

    Vendor: 存放项目需要手动引入的第三方库。

    *Sections

    Sections: 项目功能模块分组
    可按底部tabbar对应选项卡划分,若有登录、新特性等比较大的功能,也可划分为一个模块。 若果模块内的子模块功能比较多,也可在其内部划分一个子模块。 每个模块内部都分4个文件夹,分别存放对应的Controller、Model、View、Presenter。 据我了解,大部分企业iOS项目都会选取类似这种架构模式。个人觉得此架构较为清晰,可读性好,并且每个模块文件夹相对独立,开发人员相对专注开发自己的模块。

    image.png

    个人认为 Controller、Model、View、Presenter ,比 Controller、Model、View、ViewModel 更易操作,因为 有的时候 逻辑比较复杂 ,用Presenter 集中处理 逻辑 可读性更强。

    以上为本人从事iOS开发以来总结的一些项目架构经验,如有不足或者可改进之处可提出修改

    有个疑问,实际项目中,MVVM 把复杂逻辑处理 放到哪里?是 ViewModel 文件夹 下吗?

    参考网址:http://t.zoukankan.com/kunggh-p-5596752.html
    代码 :https://github.com/lizhi0123/LZSwiftDemos/tree/main/LZStructure

    相关文章

      网友评论

        本文标题:ios swift 项目结构 架构

        本文链接:https://www.haomeiwen.com/subject/uvbuzrtx.html