GoFrame 要发布 v2.1 新版本了!

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

正当我发愁今天是不是要断更的时候,突然想到今天在GoFrame交流群中,看到作者发布了群公告:GoFrame要发布V2.1新版本了。

刚刚查了 GoFrame的官方文档,目前最新的仍然是v2.0的文档,还没有正式推出v2.1的文档。

image.png

看来只是在交流群中小范围的和活跃粉丝剧透了一波。

下面我就以GoFrame活跃粉丝的身份为大家剧透一下GoFrame新版本的特性。

重要的新特性

  1. 开发工具新增 gen service 命令,支持自动化地根据 logic 层级代码,生成 service 接口代码、实现注入。

  2.  数据库组件特性:

    1. 新增 WhereBuilder 特性,用于更加灵活的 SQL 条件语句组合:ORM 查询 - Where/WhereOr/WhereNot
    2. 新增 Hook 特性,用于自定义钩子事件处理:ORM 链式操作 - Hook 特性
  3. 框架新增 DeepCopy 特性,用于类型的深度拷贝:

    1. 新增 gutil.Copy 方法,用于深度拷贝指定内容。
    2. 泛型类型新增 Copy 方法,用于深度拷贝自身内容。
    3. 框架部分数据类型已支持深度拷贝特性,例如:gvar, garray, gmap 等基础容器类型。

主要改进

社区组件

ORM 驱动实现

  1. 新增 drivers/clickhouse,用于对接 clickhouse 到 goframe ORM 组件。
  2. 完善 clickhouse/mssql/pgsql/sqlite/oracle 组件单元测试。
  3. 将 mysql 驱动从主库迁移到社区模块,便于将 mysql 从主库解耦。

注意:因此从后续版本开始,开发者需要手动引入驱动依赖。

注册发现

  1. 将 Service 实现对象改进为接口定义,并提供默认的 Service 实现,提高扩展性和易用性。
  2. 改进 HTTP/GRPC Client&Server 对接实现。

负载均衡

  1. 改进 Node 接口定义,新增 Nodes 接口定义。
  2. 修复 HTTP Client 下的服务发现负载均衡问题。

网络组件

  1. gclient

    1. 改进服务发现实现逻辑。
    2. 修复客户端关闭错误,引起的连接池无法复用问题。
  2. ghttp

    1. 改进 Request.GetUrl 方法对 URL Schema 获取细节。
    2. 参数接收支持 UploadFile 属性自动接收。
    3. 新增接口文档自定义 UI 指导文档
    4. 接口文档默认依赖的外部 JS CDN 改为 unpkg.com
    5. 改进服务注册实现逻辑。
    6. 改进内部细节实现逻辑。
    7. 修复参数为空判断问题。
  3. goai

    1. 改进更规范化符合 OpenAPIV3 协议实现。
    2. 支持所有 x- 开头的自定义标签,自动添加 OpenAPIV3 的结果中。

系统组件

  1. gcfg

    1. 默认的文件系统接口实现新增对 property 文件格式的支持。
  2. gsession

    1. 解决当访问用户过多造成的内存占用过大的问题。
  3. gproc

    1. 新增跨进程的链路跟踪特性。

容器组件

  1. garray

    1. 改进 Unique 方法性能,增加 DeepCopy 接口实现。
  2. glist

    1. 增加 DeepCopy 接口实现。
  3. gmap

    1. 增加 DeepCopy 接口实现。
  4. gset

    1. 增加 DeepCopy 接口实现。
  5. gtype

    1. 增加 DeepCopy 接口实现。
  6. gvar

    1. 增加 Copy 方法,用于深度拷贝当前泛型对象。
    2. 增加 DeepCopy 接口实现。

错误处理

  1. gerror

    1. 新增 Unwrap 方法(同 Next 方法),用以支持 Golang 新版本的 Unwrap 错误接口。
    2. 新增 Equal 方法,用于判断两个错误是否相等。
    3. 新增 Is 方法,用于支持 Golang 新版本的 Is 错误接口。

工具方法

  1. gconv

    1. 去掉整型转换时对八进制字符串的支持。
    2. 改进内部实现逻辑,提高可读性保障可维护性。
  2. gutil

    1. 新增 gutil.Copy 方法,用于深度拷贝指定内容。
    2. 改进 gutil.Dump 方法。

总结

文章中有些超链接我是在文档中搜索给大家补录上的,后续官方文档有更新,我会继续在本文中补录超链接。

image.png

最后

感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!

8e95dac1fd0b2b1ff51c08757667c47a.gif

猜你喜欢

转载自juejin.im/post/7112071743778324516