【大前端】【iOS】iOS 真实项目可落地目录结构方案

一套 iOS 真实项目可落地目录结构方案 ,包含 模块拆分、命名规范、协作约束、演进路线

目标:

✅ 新人 1 天能上手

✅ 3--10 人并行开发不冲突

✅ 支持后期组件化 / Swift Package


一、真实项目推荐总目录(MVVM + 模块化)

复制代码
MyApp
├── App
│   ├── AppDelegate.swift
│   ├── SceneDelegate.swift
│   ├── AppCoordinator.swift
│   ├── AppConfig.swift
│   └── Environment.swift
│
├── Modules                  # 业务模块(核心)
│   ├── Home
│   │   ├── HomeViewController.swift
│   │   ├── HomeViewModel.swift
│   │   ├── HomeModel.swift
│   │   ├── HomeService.swift
│   │   ├── HomeCoordinator.swift
│   │   └── HomeContracts.swift
│   │
│   ├── Login
│   ├── Profile
│   └── Settings
│
├── Base
│   ├── BaseViewController.swift
│   ├── BaseViewModel.swift
│   ├── BaseTableViewCell.swift
│   └── BaseCollectionViewCell.swift
│
├── Components               # 通用 UI 组件
│   ├── Alert
│   │   ├── AlertView.swift
│   │   └── AlertConfig.swift
│   │
│   ├── Loading
│   └── EmptyState
│
├── Network
│   ├── API
│   │   ├── UserAPI.swift
│   │   └── HomeAPI.swift
│   │
│   ├── NetworkManager.swift
│   ├── Request.swift
│   ├── Response.swift
│   └── NetworkError.swift
│
├── Storage
│   ├── KeychainManager.swift
│   ├── UserDefaultsStore.swift
│   └── CacheManager.swift
│
├── Utils
│   ├── Extensions
│   │   ├── UIView+Layout.swift
│   │   ├── String+Safe.swift
│   │   └── UIColor+Hex.swift
│   │
│   ├── Logger.swift
│   └── Constants.swift
│
├── Resources (Folder Reference)
│   ├── Assets.xcassets
│   ├── Fonts
│   ├── Localizable
│   │   ├── zh-Hans.strings
│   │   └── en.strings
│   └── LaunchScreen.storyboard
│
└── SupportingFiles
    ├── Info.plist
    └── PrivacyInfo.xcprivacy

二、模块内部「真实写法」详解(重点)

1️⃣ Home 模块拆解(真实项目)

复制代码
Home
├── HomeViewController.swift   # 只负责 UI & 事件
├── HomeViewModel.swift        # 状态、业务逻辑
├── HomeModel.swift            # 数据结构
├── HomeService.swift          # 网络 / 本地数据
├── HomeCoordinator.swift      # 页面跳转
└── HomeContracts.swift        # 协议定义

职责边界(避免后期失控)

文件 只允许做什么
VC 渲染 UI、绑定 ViewModel
VM 业务逻辑、状态管理
Service API / DB / Cache
Model struct / enum
Coordinator push / present
Contracts protocol

👉 绝不允许:

  • VC 里写网络请求

  • ViewModel 里 push 页面

  • Base 引入业务判断


三、命名规范(落地必备)

1️⃣ 文件命名

复制代码
模块名 + 职责
HomeViewController
HomeViewModel
HomeService

2️⃣ 协议命名(面试 & 架构感)

复制代码
protocol HomeViewModelInput
protocol HomeViewModelOutput
protocol HomeServiceProtocol

四、真实项目协作规则(非常重要)

1️⃣ 模块自治原则

  • 模块 不允许互相 import

  • 只能通过:

    • Protocol

    • Coordinator

    • 公共组件

2️⃣ Git 冲突最小化

  • 每人一个模块

  • 不共享 VC

  • 公共修改走 PR


五、网络层真实封装示例

复制代码
enum HomeAPI {
    case list
}

extension HomeAPI: APIProtocol {
    var path: String { "/home/list" }
    var method: HTTPMethod { .get }
}

final class HomeService {
    func fetchList() async throws -> [HomeModel] {
        try await NetworkManager.request(HomeAPI.list)
    }
}

六、Base & Components 的边界(真实踩坑总结)

Base 只做三件事:

  • 生命周期兜底

  • 通用能力(loading、toast)

  • 统一风格

Components:

  • 独立展示

  • 可单独测试

  • 可拆成 Pod / SPM


七、从单体到组件化的演进路线

阶段 1:单工程模块化

复制代码
Modules/Home
Modules/Login

阶段 2:内部组件化

复制代码
Components/Alert
Components/Loading

阶段 3:Swift Package

复制代码
MyApp
├── Packages
│   ├── HomeModule
│   ├── NetworkKit
│   └── UIComponents

👉 目录设计不变,迁移成本极低


八、真实项目「一页总结版」

iOS 真实项目目录落地三原则:

  1. 业务一定进 Modules

  2. Base 只放能力,不放业务

  3. 能拆的迟早都会拆

相关推荐
乘风gg9 小时前
多 Agent 不是万能的!搞懂这 5 个原则,少走 1 年弯路!
前端·agent·ai编程
猩猩程序员10 小时前
Vercel 推出 Agent 框架 Eve:让 AI Agent 像写 Web 应用一样简单
前端
爱读源码的大都督10 小时前
Claude Code源码分析(三):为什么系统提示词中需要有tools呢?
前端·人工智能·后端
爱勇宝10 小时前
Claude Code 被曝暗藏“隐形检测”代码:封代理不是最可怕的,可怕的是你根本不知道它在干什么
前端·后端·程序员
小牛不牛的程序员10 小时前
我用 Claude Code 半天撸完了一个完整网站,AI 编程到底提升了多少效率?
前端
东风破_10 小时前
JavaScript 面试常考的字符串算法:从反转字符串到回文判断
前端·javascript
ITOM运维行者11 小时前
从零搭建企业级服务器监控体系:踩坑实录与架构设计
前端·后端
monologues11 小时前
深入 Vue 3 源码:响应式系统的精妙设计与编译优化
前端
hunterandroid11 小时前
Paging 3 分页:从手动分页到声明式加载
前端
用户40993225021211 小时前
Vue状态管理入门第四章:组合式store和SSR风险
前端·vue.js·后端