从 v2 版本开始,最新的 CLI 工具版本功能会随着 GoFrame 框架的最新版本编译,引入如果本地的 CLI 工具自动化生成的代码与项目的 GoFrame 框架版本出现兼容性问题时,建议升级项目框架版本,或者自定义安装旧版本的 CLI 工具。旧版本CLI工具安装方式参考仓库首页介绍: https://github.com/gogf/gf-cli
重要说明🔥
CLI工具提供的代码生成功能,目的是 规范化项目代码编写、 简化项目开发复杂度, 让开发者能够把精力聚焦于业务逻辑本身。CLI工具本身会需要有一定前置的学习和理解成本(尽量理解为什么),但在熟练之后,大家的开发工作将会事半功倍。CLI工具的代码生成功能针对于企业级项目、多成员的团队性项目中收益会非常高。但针对于单人小型项目,开发者可根据个人意愿评估是否选择使用。GoFrame框架本身只是提供了基础组件,采用了组件化的灵活设计,不会对项目代码做严格的要求;但CLI工具会有一定的条框限制,目的是使得团队中每个成员的步调和风格一致,不会使得开发者的代码编写过于随意。
使用方式
$ gf gen -h
USAGE
gf gen COMMAND [OPTION]
COMMAND
ctrl parse api definitions to generate controller/sdk go files
dao automatically generate go files for dao/do/entity
enums parse go files in current project and generate enums go file
pb parse proto files and generate protobuf go files
pbentity generate entity message files in protobuf3 format
service parse struct and associated functions from packages to generate service go file
DESCRIPTION
The "gen" command is designed for multiple generating purposes.
It's currently supporting generating go files for ORM models, protobuf and protobuf entity files.
Please use "gf gen dao -h" for specified type help.
相关文档
📄️ 接口规范-gen ctrl
GoFrame提供的gf gen ctrl命令用于根据API接口定义自动生成控制器和SDK代码。该命令规范了API定义与控制器的命名和关联关系,支持按照/api/模块/版本/定义文件的目录结构组织代码,可自动生成控制器接口、初始化代码和HTTP SDK,支持File Watch自动化生成模式,有效减少重复性代码工作,降低多人协作时的代码冲突概率,提高团队开发效率。
📄️ 数据规范-gen dao
GoFrame框架的gf gen dao命令用于自动生成dao数据访问对象、do数据转化模型和entity实体数据模型的Go代码文件。该命令是框架工程规范落地的关键工具,支持通过命令行参数或配置文件管理生成规则,适用于MySQL、PostgreSQL、SQLite等多种数据库类型,支持表名通配符匹配、自定义类型映射、分表规则等高级功能,可显著提高数据层代码的开发效率和规范性。
📄️ 模块规范-gen service
GoFrame框架的业务模块规范化管理工具,通过分析logic业务逻辑层代码自动生成service接口定义和模块注册代码,实现业务逻辑实现与接口定义的自动化分离。该工具采用包管理方式组织业务模块,通过接口化设计实现模块间解耦,支持从具体实现直接生成接口定义,降低重复编码工作量,提高模块间透明度和调用便捷性。需要注意该方式为可选的代码管理方式,框架同样支持标准的先定义接口后编码实现的开发模式,适用于不同团队的开发习惯和项目场景。
📄️ 枚举维护-gen enums
GoFrame框架提供的枚举维护命令工具,通过自动分析项目源码生成规范化的枚举值定义和Go代码文件,主要用于完善OpenAPIv3文档中的枚举值维护。该工具能够有效解决API文档中枚举值类型参数展示不全、代码与文档脱节等问题,通过AST语法树解析技术自动识别和注册枚举值,显著降低手工维护成本,避免枚举值遗漏,提高前后端协作效率和开发质量。
📄️ 协议编译-gen pb
GoFrame框架的协议编译命令工具,用于编译protobuf协议文件并自动生成相应的Go语言接口代码和控制器文件。该命令支持自定义接口文件和控制器文件的输出路径配置,能够智能识别已存在的接口实现方法并避免重复生成,有效防止代码覆盖。通过gf gen pb命令可以快速完成从proto协议定义到Go代码实现的转换,显著提升gRPC服务开发效率,简化微服务架构中的接口定义和实现流程。
📄️ 数据表PB-gen pbentity
GoFrame框架提供的数据表结构至protobuf文件的自动转换工具,通过gf gen pbentity命令读取数据库表结构生成对应的proto数据结构定义文件。该工具与gen dao模块生成的entity不同,pbentity主要用于gRPC服务中的数据传输实体,支持多种数据库类型,可自定义字段命名格式和JSON标签格式,提供灵活的类型映射配置,适用于需要同时提供HTTP和gRPC服务的微服务架构,实现数据库表结构与protobuf协议定义的自动同步维护。