VibeCoding工程流程学习二:iOS项目架构

前言

构建一个可以复用的iOS项目结构,要求方便测试方便扩展,组件化,主要构建思想为clean architecure, swiftject 进行解耦,通过spm 拆分组件。详细项目地址为Demo

🛠 技术架构

Technology Purpose
Swift 5 Language
SwiftUI UI Framework (iOS 15+)
Swift Package Manager Modular dependency management
RxSwift 6.x / RxCocoa Reactive programming (Domain, Data, Networking)
Combine Reactive UI bindings (Presentation layer only)
Swinject 2.x Dependency Injection container
WKWebView Web content embedding + JS bridge
URLSession HTTP networking (via RxSwift wrappers)

📁 项目结构

ruby 复制代码
MyEcommerce/
├── MyEcommerce/                          # App entry point
│   ├── MyEcommerceApp.swift              # @main --- DI registration + navigation
│   ├── Routing/
│   │   └── AppWebRouteFactory.swift      # Composition root for WebContainer routing
│   └── Assets.xcassets/                  # App icons, colors, resources
│
├── Packages/                              # ★ All business logic as SPM packages
│   ├── Abstraction/                      # Pure protocol layer
│   ├── Domain/                           # Use case implementations
│   ├── Data/                             # Repository + service implementations
│   ├── Presentation/                     # SwiftUI feature packages
│   │   ├── LoginFeature/                 # LoginView + LoginViewModel
│   │   ├── ProductsFeature/             # ProductList + ItemDetail
│   │   ├── BasketFeature/               # BasketView + BasketViewModel
│   │   └── WebContainerFeature/         # WKWebView embedding + JS bridge
│   └── Utilities/                        # Cross-cutting utilities
│       ├── Networking/API/              # HTTP client, mock provider, environment
│       ├── Utils/                       # RxSwift → Combine bridge
│       └── Analytics/                   # Event tracking wrapper
│
├── MyEcommerceTests/                     # Unit test scaffold
├── MyEcommerceUITests/                   # UI test scaffold
│
├── CLAUDE.md                             # AI coding assistant instructions
├── docs/
│   ├── architecture.md                   # Architecture documentation (Chinese)
│   └── plans/                            # Implementation plans
│
└── .claude/                              # Claude Code configuration
相关推荐
茶底世界之下3 小时前
动态切换 nearest / linear 时,为什么不能只替换 sampler
ios·swift
一缕82年的清风8 小时前
当 AI 承包了 90% 的代码,架构师那致命的 10% 到底在控什么?
人工智能·vibecoding
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第7课 平台适配与互操作
android·windows·学习·ui·ios·kotlin·composer
传奇开心果编程1 天前
【Compose Multiplatform 跨端开发学与练】第5课 网络与数据层
android·网络·学习·ui·ios·kotlin·composer
茶底世界之下1 天前
视频预览切换为何会闪回旧帧:用 generation + mode identity 管住异步回调
ios·swift
老李IT笔记1 天前
从备份恢复会把管理状态带回来吗:iOS 27 之后答案变了|MDM.Plus
ios·智能手机
谢亮_vipxieliang1 天前
Go 接口设计原则核心知识点
开发语言·ios·golang
Hello_Pyhx1 天前
iPhoneMirror:把 iPhone 接入 Windows,先分清投屏与反控
windows·ios·iphone
茶底世界之下2 天前
类型擦除之后,Metal 滤镜组合为什么不能只执行一个 Filter?
ios·swift
传奇开心果编程2 天前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui