核心用法
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 工具链。