写在前面

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 官方泛型。官方泛型在框架部分组件的部分特性下有改造价值。