GoFrame 新版本特性 抢先知
正当我发愁今天是不是要断更的时候,突然想到今天在GoFrame交流群中,看到作者发布了群公告:GoFrame要发布V2.1新版本了。
刚刚查了 GoFrame的官方文档,目前最新的仍然是v2.0的文档,还没有正式推出v2.1的文档。
看来只是在交流群中小范围的和活跃粉丝剧透了一波。
下面我就以GoFrame活跃粉丝的身份为大家剧透一下GoFrame新版本的特性。
重要的新特性
-
开发工具新增
gen service
命令,支持自动化地根据logic
层级代码,生成service
接口代码、实现注入。 -
数据库组件特性:
- 新增
WhereBuilder
特性,用于更加灵活的SQL
条件语句组合:ORM 查询 - Where/WhereOr/WhereNot - 新增
Hook
特性,用于自定义钩子事件处理:ORM 链式操作 - Hook 特性
- 新增
-
框架新增
DeepCopy
特性,用于类型的深度拷贝:- 新增
gutil.Copy
方法,用于深度拷贝指定内容。 - 泛型类型新增
Copy
方法,用于深度拷贝自身内容。 - 框架部分数据类型已支持深度拷贝特性,例如:
gvar, garray, gmap
等基础容器类型。
- 新增
主要改进
社区组件
ORM 驱动实现
- 新增
drivers/clickhouse
,用于对接clickhouse
到goframe ORM
组件。 - 完善
clickhouse/mssql/pgsql/sqlite/oracle
组件单元测试。 - 将
mysql
驱动从主库迁移到社区模块,便于将mysql
从主库解耦。
注意:因此从后续版本开始,开发者需要手动引入驱动依赖。
注册发现
- 将
Service
实现对象改进为接口定义,并提供默认的Service
实现,提高扩展性和易用性。 - 改进
HTTP/GRPC Client&Server
对接实现。
负载均衡
- 改进
Node
接口定义,新增Nodes
接口定义。 - 修复
HTTP Client
下的服务发现负载均衡问题。
网络组件
-
gclient
- 改进服务发现实现逻辑。
- 修复客户端关闭错误,引起的连接池无法复用问题。
-
ghttp
- 改进
Request.GetUrl
方法对URL Schema
获取细节。 - 参数接收支持
UploadFile
属性自动接收。 - 新增接口文档自定义 UI 指导文档
- 接口文档默认依赖的外部
JS CDN
改为unpkg.com
。 - 改进服务注册实现逻辑。
- 改进内部细节实现逻辑。
- 修复参数为空判断问题。
- 改进
-
goai
- 改进更规范化符合
OpenAPIV3
协议实现。 - 支持所有
x-
开头的自定义标签,自动添加OpenAPIV3
的结果中。
- 改进更规范化符合
系统组件
-
gcfg
- 默认的文件系统接口实现新增对
property
文件格式的支持。
- 默认的文件系统接口实现新增对
-
gsession
- 解决当访问用户过多造成的内存占用过大的问题。
-
gproc
- 新增跨进程的链路跟踪特性。
容器组件
-
garray
- 改进
Unique
方法性能,增加DeepCopy
接口实现。
- 改进
-
glist
- 增加
DeepCopy
接口实现。
- 增加
-
gmap
- 增加
DeepCopy
接口实现。
- 增加
-
gset
- 增加
DeepCopy
接口实现。
- 增加
-
gtype
- 增加
DeepCopy
接口实现。
- 增加
-
gvar
- 增加
Copy
方法,用于深度拷贝当前泛型对象。 - 增加
DeepCopy
接口实现。
- 增加
错误处理
-
gerror
- 新增
Unwrap
方法(同Next
方法),用以支持Golang
新版本的Unwrap
错误接口。 - 新增
Equal
方法,用于判断两个错误是否相等。 - 新增
Is
方法,用于支持Golang
新版本的Is
错误接口。
- 新增
工具方法
-
gconv
- 去掉整型转换时对八进制字符串的支持。
- 改进内部实现逻辑,提高可读性保障可维护性。
-
gutil
- 新增
gutil.Copy
方法,用于深度拷贝指定内容。 - 改进
gutil.Dump
方法。
- 新增
总结
文章中有些超链接我是在文档中搜索给大家补录上的,后续官方文档有更新,我会继续在本文中补录超链接。
最后
感谢阅读,欢迎大家三连:点赞、收藏、投币(关注)!!!
转载自:https://juejin.cn/post/7112071743778324516