写在前面

GoFrame框架发布了v2版本,这是一个里程碑版本,包含了很多新功能特性和大量改进,并且发布了一些开创性的特性。

如果是新用户,请直接使用v2起飞。如果是老用户,墙裂推荐从v1升级为v2,更加稳定可靠。

v2升级的几点重要说明:

  1. 为保证兼容性,按照Golang官方module管理的规范,我们将import路径变化了,因此需要全局替换import路径。
  2. 由于是大版本升级,因此存在部分方法删减、更新的情况,大家放心一切都有更好的方案提供啦。
  3. 一般来说升级后重新编译,根据编译错误提示修改代码即可完成升级。
  4. gredis组件由于支持集群化,因此配置发生了变化,这块需要注意。

我们没有提供升级工具,因为我们觉得提供升级指导即可。

v1与v2的兼容性

为了保证项目兼容性,能够同时依赖v1v2版本,因此我们发布了v1最后一个版本v1.16.7,大家有需要可以升级。并且解决了client_tracing.go:73:3: undefined: attribute.Any的常见问题。但同时依赖两个版本的GoFrame可能会降低项目维护性,因此建议大家尽快升级到v2版本。

将依赖替换为v2

全局替换源代码即可,规则如下:

  1. "github.com/gogf/gf/ => "github.com/gogf/gf/v2/

像这样:

如何从v1愉快升级到v2 - 图1

下载最新v2版本

  1. go get -u github.com/gogf/gf/v2@latest

工程目录的调整

如果您使用的是GoFrame官方推荐的工程目录结构,可以参考最新的工程目录结构手动调整即可:工程目录设计

需要注意的是,最新的cli工具不再支持旧版工程目录的项目创建。

编译运行修改

运行您的项目,如果遇到编译问题,根据错误提示进行手动修改,如此循环。

如果您不知道如何修改,请在本文档评论,我们的社区团队小伙伴将会及时给与升级帮助。

CLI的重要变化

  1. 去掉了swagger命令。v1版本的gf swagger命令时通过自动安装第三方的swag工具,解析源代码中的注释生成的swagger文档。这种文档的管理维护方式会有一些问题:仅支持Swagger2.0协议、使用体验很差、注释难以和代码同步维护,造成接口文档与代码不一致的问题。新版本有了规范路由,该命令即废弃掉了。如果需要继续使用该命令的功能,可以手动安装使用第三方swag工具:https://github.com/swaggo/swag
  2. 去掉了update命令。v2版本开始,CLI工具的安装下载统一走github,以减少CLI工具的维护工作量。后续可能会重新增加该命令。

一些重要说明

  1. gf-cli的仓库已经搬迁到了gf主库维护,便于保证工具与框架版本同步。原有仓库不再维护。具体请查看说明:https://github.com/gogf/gf/tree/master/cmd/gf
  2. 框架核心组件采用了接口化设计,为保证接口通用性,对外暴露的方法有个别删减。
  3. 框架核心组件大量使用了gvar泛型,以提高易用性、屏蔽底层的具体类型实现。为保证稳定性和易用性,框架在未来2-3年内不会考虑使用Golang官方泛型。官方泛型在框架部分组件的部分特性下有改造价值。