Hello
,小伙伴久等啦!距离上一次发布,时隔刚好半年,这半年发生了很多很多的事情。薛老的猫以不同的观测方式决定了小猫不同的结果,同样看待世界的不同方式决定了世界在我们眼中的样子。这次给大家带来了最新GoFrame v1.16
版本!GoFrame
是一款模块化、高性能、企业级的Go
基础开发框架:https://goframe.org ,一款低调务实、真正意义的企业级Golang
开发框架!本次更新包含了大量的新特性和功能改进,特别是全链路跟踪、ORM
模型关联/嵌套事务/子查询/数十项新增方法、HTTP
客户端拦截器、数据校验及I18N
组件改进、重构版的定时器等等。本次更新内容较多,以下为主要更新介绍,希望大家喜欢!Enjoy!
本次文档有大量更新,目前开发文档总约有20+万字,建议按照官方目录结构进行阅读
OpenTelementry
标准,目前已打通HTTP Client&Server/GRPC Client&Server/ORM/Redis/Logging
组件,详细介绍请参考章节:PHP Laravel
),正在使用goframe
的小伙伴们建议务必看一下:Context
的支持,并改进支持了强大的I18N
国际化错误信息管理能力,详情请参考章节:gtimer
的全新重构,去掉TimingWheel
的实现,改为了更加稳健的PriorityQueue
的改进实现,详情请参考章节:定时器-gtimerORM
Context
参数传递:ORM上下文变量 链路跟踪中默认会记录SQL
以及数据库连接信息(不包含敏感配置),组件链路跟踪信息可配置关闭。ORM
组件日志记录,日志仅在调试模式下有效,详细介绍请参考章节:ORM高级特性ORM
模型操作方法(参考PHP Laravel
),例如:InsertAndGetId
、Min/Max/Avg/Sum
、Increment/Decrement
、WhereBetween/WhereLike/WhereIn/WhereNull
、OrderAsc/OrderDesc/OrderRandom
等等。正在使用goframe
的小伙伴们建议务必看一下,详情请参考章节:ORM
链式操作默认启用了字段过滤特性,当给定的参数无法与数据表字段智能匹配时将会被自动过滤,详情请参考章节:ORM链式操作-字段过滤pgsql
数据库类型int8
到Golang
类型的转换,从int
类型调整为了int64
。HTTP
HTTP Client
增加中间件拦截器功能特性:HTTPClient-拦截器/中间件HTTP Client&Server
增加链路跟踪支持:链路跟踪-HTTP示例ghttp
包中的客户端请求方法标记废除,后续统一采用HTTP Client
对象方式使用。Request.Parse
方法的数据校验,直接校验提交参数,而不是校验数据转换后的struct
对象:请求输入-请求校验WrapF/WrapH
方法,用于将标准库的http.HandlerFunc/http.Handler
转换为ghttp.Server
支持的服务方法类型。gvalid
Check
方法名称修改为了CheckValue
,详情请参考章节:数据校验-单数据校验CheckStructWithData
方法,用于校验指定参数的struct
对象:数据校验-Struct校验Validator
校验对象,用于便捷的链式操作,并可在后期进行进一步扩展:数据校验-校验对象Context
上下文变量输入,并增加RuleFunc
及RuleFuncMap
局部校验规则注册方法:数据校验-自定义规则Context
参数支持,并改进支持了强大的I18N
国际化错误信息管理能力:Error
错误对象修改为了接口实现,需要注意之前使用*Error
指针方式的地方会报错。gcache
gredis
gjson
Option
类型名称修改为了Options
,这是一项非兼容性更新。NewWithOption
方法名称修改为了NewWithOptions
。gcmd
GetOptWithEnv
方法,并将GetWithEnv
方法标记废弃。glog
OpenTelemetry
标准的链路跟踪支持:日志组件-Contextgproc
gres
gtimer
gtimer
的全新重构,去掉TimingWheel
的实现,改为了更加稳健的PriorityQueue
的改进实现,详情请参考章节:定时器-gtimergview
Context
参数输入:模板引擎gconv
Scan
方法,增加对Map/Maps
参数类型的自动转换支持:类型转换-Scan转换gi18n
I18N
国际化组件增加对Context
的支持,详情请参考章节:I18N国际化ctx
参数的输入,并去掉了部分方法的language
参数,转而由ctx
参数来控制language
输入,并提高可扩展性:I18N国际化-使用介绍TranslateFormatLang
、Tfl
方法。gmeta
gmeta
元数据包,详情请参考章节:元数据-gmetaCLI
工具有更新,主要是简化了dao
模型代码生成,去掉了重复方法生成,去掉了直接返回模型对象的相关方法,dao
对象修改为了直接继承GoFrame ORM
组件中的Model
对象,通过给定模型接受查询数据,因此部分方法使用的方式会需要调整。