GoFrame v2.5 版本發布,企業級 Golang 開發框架
大家好啊,GoFrame 框架今天發布了 v2.5.0 正式版本啦!????????
本次版本主要是對已有功能組件以及開發工具上的改進工作。其中,開發工具新增了 gf gen ctrl 命令,以規范化定義、開發 API 接口,增加控制器、SDK 的代碼生成提高開發效率,以解決 Golang 工程開發中接口層面的規范和效率問題,詳情請參考:接口規范 - gen ctrl[1]。其他變更內容請參考以下 change log。Enjoy!????????????????
Github ChangeLog:https://github.com/gogf/gf/releases/tag/v2.5.0[2]
完整代碼變更: v2.4.0...v2.5.0[3],感謝本次所有的貢獻開發者:
功能改進
- gdb
改進 ORM SQL 日志記錄,操作的字段按照數據表字段定義順序進行操作。
改進 HOOK 方法實現,支持修改 in 參數的 Table 字段后修改執行的表名。
新增 AllAndCount/ScanAndCount 方法,用于實現便捷的分頁查詢場景。
新增 Model.WhereOrNot/WhereOrPrefixNot 條件方法。
- gi18n
- 改進支持中文(Unicode)作為轉譯的鍵名。
- gclient
- 新增 Discovery 鏈式操作方法,用于設置本次請求的服務發現組件。
- ghttp
- 改進請求 Context 上下文處理,每次 Context 的變更將會影響底層的 http.Request 對象。以支持自定義 HTTP Handler 的數據交互場景。
- 新增 Endpoints 配置項支持,用于自定義 Server 的服務注冊發現地址,而可以使用當前監聽的地址。
- goai
- 改進參數校驗識別,如果參數為必須參數,則在 OpenAPIv3 結果中進行標記。
- gsel
- 修復 RoundRobin 實現中 Endpoints 更新的鎖機制問題。
- glog
- 新增 TimeFormat 配置,用于自定義日志輸出的時間格式:日志組件 - 配置管理[4]
- 改進 Rotation 實現,支持短運行程序的日志文件切分。
- gtag
- 新增 GetGlobalEnums 方法,用于獲取全局注冊的枚舉類型。
- gutil
- 新增 DumpJson 方法,用于將任意類型變量按照 JSON 格式化打印到終端,便于人工閱讀。
- gvalid
- 新增 enums 校驗規則,用于實現枚舉類型的自動識別和校驗:數據校驗 - 校驗規則[5]
社區組件
- 修復 contrib/registry/polaris 組件在多個服務端時的負載均衡問題。
- 改進 contrib/drivers/pgsql 在 TableFields 返回的 Index 字段序號統一從 0 開始。
- 改進 contrib/nosql/redis 新增用戶配置項支持。
- 改進 contrib/rpc/grpcx 組件,grpcx.Server 新增 Endpoints 配置項支持,用于自定義服務注冊發現的地址。
- 新增 contrib/sdk/httpclient 組件,用于本次版本新增的 gf gen ctrl 命令生成的 HTTP SDK 代碼文件依賴庫。
- 新增 contrib/trace/otlpgrpc 及 contrib/trace/otlphttp 組件,用以實現基于 OpenTelemetry 的鏈路跟蹤統一對接組件。
開發工具
- 新增 gf gen ctrl 命令,用于編譯 api 定義目錄,自動生成規范的 controller、HTTP SDK 代碼:接口規范 - gen ctrl[6]
- 改進 gf gen dao 命令,新增 TypeMapping 特性,開發者可自定義數據表字段類型與生成的 Go 實體數據結構屬性類型映射,并且可以方便引入第三方包類型(如 decimal 包以支持高精度類型):數據規范 - gen dao[7]
- 改進 gf gen enums 命令,其中的 Prefix 參數改為 Prefixes,以支持多個生成枚舉類型的包前綴指定:枚舉維護 - gen enums[8]
- 改進 gf gen service 命令:
- 生成的 service 文件中,增加方法注釋生成。
- 當生成的 service 文件中存在 import 沖突時,自動生成 import alias。
- 改進命令行封裝,暴露 gfcmd.Command 類型,便于開發者可以繼承擴展自定義命令行功能。
- 改進 gf docker 命令,將構建文件參數設置為非必須(考慮兼容),未來將會只用于 Docker 構建,不再耦合二進制構建功能。如果有完整構建需求,建議未來結合 gf build 功能共同使用。并更新項目工程模板的 make image 命令,使用 gf build+gf docker 命令實現。
- 改進 gf init 命令,修復在部分場景下初始化項目覆蓋已存在的.git/.gitignore 目錄及文件問題或權限報錯問題。
- 改進 gf up 命令,修復在部分場景下的框架版本更新問題,以及在 windows 系統下的下載安裝問題。
- 改進 gf version 命令,修復在部分場景下的框架版本識別問題。
- 修復 gf gen pbentity 命令,生成的 proto 文件實體數據結構的 float32/float64/[]byte 類型修改為 float/double/bytes 類型。
- 改進開發工具,部分命令可以不用顯示配置 importPrefix 參數,如:gf gen dao/service
相關資料
[1]接口規范 - gen ctrl: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D93880327
[2]https://github.com/gogf/gf/releases/tag/v2.5.0: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fgogf%2Fgf%2Freleases%2Ftag%2Fv2.5.0
[3]v2.4.0...v2.5.0: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fgogf%2Fgf%2Fcompare%2Fv2.4.0...v2.5.0
[4]日志組件 - 配置管理: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D1114388
[5]數據校驗 - 校驗規則: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D1114367
[6]接口規范 - gen ctrl: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D93880327
[7]數據規范 - gen dao: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D3673173
[8]枚舉維護 - gen enums: https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgoframe.org%2Fpages%2Fviewpage.action%3FpageId%3D86187843本文轉載自微信公眾號「 程序員升級打怪之旅」,作者「王中陽Go」,可以通過以下二維碼關注。
轉載本文請聯系「 程序員升級打怪之旅」公眾號。