fosmvvm-viewmodel-generator

🏗️ FOSMVVM 架构 ViewModel 智能生成器

FOSUtilities 官方出品的 SwiftUI ViewModel 代码生成技能,基于 FOSMVVM 架构自动生成服务端/客户端托管的 ViewModel、请求类型、本地化绑定及工厂代码,显著提升 iOS 开发效率与架构一致性。

收藏
16.4k
安装
3.9k
版本
v2.0.6
CLS 安全性认证2026-05-08
点击查看完整报告 >

使用说明

核心用法

FOSMVVM ViewModel Generator 是一款专为 SwiftUI 开发者设计的架构代码生成工具,基于 FOSMVVM(Model-View-ViewModel)架构模式,自动生成完整的 ViewModel 脚手架代码。该技能通过对话上下文自动识别需求,无需手动指定文件路径或回答冗长问卷。

使用时,开发者通过 /fosmvvm-viewmodel-generator 命令触发技能,系统根据对话中已明确的视图需求、数据源类型(服务端数据库或本地状态)以及是否为表单输入场景,自动生成对应的代码文件。对于服务端托管模式(Server-Hosted),生成 ViewModel 结构体、Request 类型、YAML 本地化文件及工厂实现共 4 个文件;对于客户端托管模式(Client-Hosted),仅需 2 个文件,工厂代码由宏自动生成。子组件 ViewModel 则根据是否包含本地化文本生成 1-2 个文件。

显著优点

该技能的最大优势在于架构标准化与开发效率的双重提升。首先,它强制推行 FOSMVVM 架构的最佳实践,包括 @ViewModel 宏的正确使用、、@LocalizedString 属性包装器的自动绑定、以及 RequestableViewModel 与纯 ViewModel 的清晰区分,确保团队代码风格高度一致。

其次,本地化支持深度集成。技能自动处理静态 UI 文本(@LocalizedString)、动态枚举值(LocalizableString)、日期数字格式化(LocalizableDate//LocalizableInt`)等多种本地化场景,且支持服务端编码时本地化与客户端编码时本地化两种模式,满足全球化应用需求。

第三,错误处理模式优雅。针对客户端错误展示场景,技能提供专门的 Client-Hosted 模式,允许开发者将捕获的 ResponseError 快速包装为特定 ViewModel,避免创建通用的「ToastViewModel」反模式,保持类型安全与架构清晰。

第四,代码生成全面。从顶层页面 ViewModel 到嵌套子组件,从展示型 ViewModel 到表单型 ViewModel(自动关联 Fields 协议),覆盖 MVVM 开发的全场景需求。

潜在缺点与局限性

该技能的主要局限在于框架绑定性。FOSMVVM 是一个特定的架构实现,与 SwiftUI、Vapor 后端及特定的本地化系统深度耦合,无法直接应用于 UIKit、React Native 或其他技术栈的项目。对于未采用 FOSMVVM 架构的团队,学习曲线和迁移成本较高。

其次,技能本身为纯文档型工具,仅提供代码模板和生成指导,不直接执行代码生成操作。实际代码生成依赖于开发者在 Xcode 或命令行环境中的手动操作,或配合其他自动化工具使用,无法做到「一键生成并写入项目」。

第三,对于复杂业务逻辑,自动生成的工厂代码可能需要大量手动调整。特别是服务端托管模式下,数据库查询逻辑、数据转换规则仍需开发者自行实现,技能仅提供骨架代码。

第四,嵌套子类型的使用规则较为精细(如「仅当子类型仅被单一父类型使用且不代表完整 ViewModel 时才嵌套」),初学者容易混淆何时嵌套、何时独立成文件。

适合的目标群体

该技能最适合以下开发者:正在使用或计划采用 FOSMVVM 架构的 SwiftUI 开发团队;需要构建服务端渲染(Server-Side Swift)与原生客户端混合应用的工程师;对 MVVM 架构有深入理解,希望提升代码生成效率的中高级 iOS 开发者;以及需要维护大型 SwiftUI 代码库、追求架构一致性的技术团队。

对于纯 UIKit 项目、跨平台框架(Flutter/React Native)开发者,或小型原型项目,该技能的价值有限。

使用风险

性能方面,由于技能本身不执行代码,无运行时性能影响。但生成的 ViewModel 若包含大量嵌套子类型或复杂计算属性,可能在 SwiftUI 的 body 计算中引发不必要的重绘,需遵循「View 仅渲染,不在 View 中组合数据」的原则。

依赖项方面,使用该技能生成的代码依赖于 FOSUtilities 框架及其宏系统,需确保项目已正确配置 Swift Package Manager 依赖和宏编译支持。YAML 本地化文件需与项目的本地化系统(如 Vapor 的 Leaf 渲染或 SwiftUI 的字符串目录)正确集成。

版本兼容性方面,技能文档提及 Swift 6 并发特性(Sendable 协议),需确保开发环境为 Xcode 15+ 及 Swift 6 工具链。

安全解读

核心功能

fosmvvm-viewmodel-generator 是专为 FOSMVVM 架构设计的代码生成工具,用于自动化创建 SwiftUI 页面的 ViewModel 层。该工具核心价值在于将 MVVM 架构的样板代码标准化,同时提供灵活的双模式托管支持。

架构定位

在 FOSMVVM 架构中,ViewModel 作为 Model 与 View 之间的桥梁:

  • 数据流向: Model → ViewModel(工厂构建/本地化编码)→ View(纯渲染)
  • 关键特性: 由工厂创建、编码时完成本地化、View 仅负责渲染

双托管模式

| 模式 | 数据源 | 工厂实现 | 适用场景 |
|------|--------|---------|---------|
| **Server-Hosted** | 服务端/数据库 | 手写服务端工厂 | 登录页、用户资料、API 数据展示 |
| **Client-Hosted** | 本地状态/偏好设置 | 宏自动生成 | 设置页、引导页、错误提示 |

Client-Hosted 模式通过 @ViewModel(options: [.clientHostedFactory]) 宏自动生成工厂代码,显著降低本地状态管理的样板代码量。

显著优点

1. 架构一致性: 强制分离数据获取、本地化、展示三层职责
2. 类型安全: 利用 Swift 类型系统避免运行时错误,如 RequestableViewModel 关联具体 Request 类型

3. 本地化自动化: @LocalizedString 宏绑定 YAML 资源,编码时自动解析,View 无需关心本地化逻辑

4. 测试友好: 所有 ViewModel 遵循 Stubbable 协议,支持 stub() 快速生成预览数据

5. 代码生成减负: Client-Hosted 模式下工厂代码自动生成,减少 50% 以上样板代码

潜在局限

1. 学习曲线陡峭: 需要理解 FOSMVVM 特有的概念(如 LocalizableString vs @LocalizedString、CompoundString 等)
2. 生态绑定: 深度依赖 FOSUtilities 框架,迁移成本较高

3. Server-Hosted 模式仍需手写工厂: 复杂查询场景下服务端工厂仍需人工实现

4. 模板化风险: 过度依赖生成器可能导致开发者不理解底层机制

适合人群

  • 采用 FOSMVVM 架构的 SwiftUI 项目团队
  • 需要服务端-客户端共享 ViewModel 定义的混合应用
  • 重视类型安全和本地化自动化的中大型 iOS/macOS 项目

常规风险

  • 架构锁定: 项目深度耦合 FOSMVVM 后难以迁移至其他架构
  • 宏调试困难: Swift 宏生成的代码调试体验较差
  • YAML 同步维护: 本地化字符串分散在 YAML 与 Swift 代码中,需确保键名一致性
  • 版本兼容性: 需跟踪 FOSUtilities 框架更新,API 变动可能影响生成模板

fosmvvm-viewmodel-generator 内容

手动下载zip · 13.5 kB
reference.mdtext/markdown
请选择文件