GF(Go Frame)
是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、对象池、配置管理、资源管理、数据校验、数据编码、定时任务、数据库 ORM 、TCP/UDP 组件、进程管理 /通信等等。并提供了 Web 服务开发的系列核心组件,如:Router 、Cookie 、Session 、Middleware 、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPS 、Rewrite 等特性。
GoFrame
开始得比较早,2011
年始于北京一个智能物联网平台项目,那时还没有这么多物联网的现行标准,Go
的标准库以及生态也未如此丰富。2017
年的时候GF
才开始发布测试版,2018
年1024
程序员节日的时候才发布v1.0
正式版,为Go
生态发展添砖加瓦。开源以来快速迭代、发展成长,广受开发者和企业的青睐,也有许多的开发者加入了贡献行列。GF
原本是为开发团队设计的,因此她的开发效率和可维护性做得非常好,有着很高的代码质量以及丰富的单元测试和示例,并且GF
是目前中文化文档做的最好的Golang
开发框架。
Golang
运行版本降级为了v1.11
。GoFrame
视频教程地址:
guuid
模块迁移到 github.com/gogf/guuid 作为社区模块维护,保持gf
主仓库的轻量级。guid
模块,用于高效轻量级的唯一字符串生成: https://goframe.org/util/guid/indextool chain
gf env
命令,更优雅地查看当前Golang
环境变量信息。gf mod path
命令,用于将当前go modules
包拷贝到GOPATH
中,以便使用原始的GOPATH
方式开发项目。cli
命令进行了一些改进,提高使用体验;预编译二进制版本在部分平台下提供了upx
压缩,使得下载的文件更小。container
garray
var garray.Array
的变量定义使用方式;Walk
方法,用于自定义的数组元素处理方法;ContainsI
方法,用于大小写忽略匹配的数组元素项存在性查找;94%
;gchan
glist
var glist.List
的变量定义使用方式;99%
;gmap
Map
使用方式,支持类似于var gmap.Map
的变量定义使用方式;81%
;gset
var gset.Set
的变量定义使用方式;Walk
方法,用于自定义的集合元素处理方法;90%
;gtree
var gtree.BTree
的变量定义使用方式;90%
;gvar
69%
;database
gdb
Transaction(f func(tx *TX) error) (err error)
接口方法,用于通过闭包实现事务封装处理: https://goframe.org/database/gdb/transactionFrom
接口方法,改进Table
及Model
方法的参数为不定参数,并支持通过不定参数传递表别名: https://goframe.org/database/gdb/chaining/selectDryRun
特性,支持空跑时只执行查询不执行写入 /更新 /删除操作: https://goframe.org/database/gdb/seniorcreate_at
, update_at
写入时间、更新时间字段自动填充特性: https://goframe.org/database/gdb/chaining/auto-timedelete_at
软删除特性: https://goframe.org/database/gdb/chaining/auto-timeHaving
链式操作方法,用于having
条件查询: https://goframe.org/database/gdb/chaining/selectResult
结果对象增加Chunk
方法,用于自定义的数据分批处理: https://goframe.org/database/gdb/resultSchema
数据库运行时切换特性;pgsql
, mssql
, sqlite
, oracle
数据库字段类型的支持;gredis
MaxActive
连接池参数默认配置为100
,限制默认的连接数量;Conn
连接对象的Do
方法,支持对map/slice/struct
类型进行自动的json.Marshal
处理,注意获取数据时使用DoVar
方法获取: https://goframe.org/database/gredis/usage72%
;net
ghttp
Prefix
及Retry
客户端链式操作方法;ClientMaxBodySize
的服务端配置,用于限制客户端提交的Body
大小,默认为8MB
;在涉及到上传的 Server 中需要增加该配置的大小,在配置文件中指定对应的大小即可,如ClientMaxBodySize="100MB"
: https://goframe.org/net/ghttp/configSessionId
生成的随机性,提高Session
安全性: https://goframe.org/os/gsession/indexghttp.Server
实现了标准库的http.Handler
接口,便于与其他第三方的服务如Prometheus
进行代码集成;61%
;gipv4
GetIpArray
方法,用于获取当前主机的所有 IPv4 地址;GetMacArray
及GetMac
方法,用于获取当前主机的MAC
地址信息;IntranetIP
方法名称为GetIntranetIp
,修改IntranetIPArray
方法名称为GetIntranetIpArray
;encoding
gjson
GetMaps
获取JSON
内部节点变量方法;NewWithTag
方法对map/struct
的处理;77%
;gyaml
yaml
解析包,解决了map[interface{}]interface{}
转换问题;error
gerror
NewfSkip
方法,用于创建skip
指定堆栈的错误对象;os
gcache
GetVar
方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;Removes
方法废弃,改进Remove
方法参数为不定参数,统一使用Remove
方法删除单个 /多个键值对;96%
;genv
GetVar
方法,用于获得可以便捷转换为其他数据类型的"泛型"变量;gfile
CopyDir/CopyFile
复制目录 /文件方法;ScanDirFunc
方法,用于支持自定义处理回调的目录检索;64%
;glog
Context
上下文变量的日志打印特性: https://goframe.org/os/glog/contextgres
20%
压缩率,使得编译生成的二进制文件体积更小;gsession
SessionId
默认生成方法,采用guid.S
方法生成;SetId
及SetIdFunc
方法,用于自定义SessionId
及自定义的SessionId
生成方法;frame
g
g.Table
方法,用于快速创建数据库模型操作对象;i18n
gi18n
GetContent
方法,用于获取指定i18n
关键字为转译内容;74%
;test
gtest
AssertNQ
断言方法,用于强类型的不相等判断;text
gstr
SubStrRune
方法,用于支持unicode
的字符串截取;StrLimitRune
方法,用于支持unicode
的字符串截断隐藏;LenRune
方法,用于替换RuneLen
方法,统一方法命名风格;PosRune/PosIRune/PosRRune/PosRIRune
方法,用于支持unicode
的字符串左右位置查找;CompareVersionGo
方法,用于Golang
风格的版本号大小比较;75%
;util
gconv
Convert
转换方法,支持常见map
类型的转换;error
返回;63%
;grand
B
方法,用于获得随机的二进制数据;50%
;74%
;guid
guid
模块,用于高效轻量级的唯一字符串生成: https://goframe.org/util/guid/indexgutil
MapContains
方法,用于判断 map 中是否包含指定键名;MapDelete
方法,用于删除 map 中指定的键名,可以为多个键名;MapMerge
方法,用于合并两个 map ;MapMergeCopy
方法,用于拷贝多个 map ;MapContainsPossibleKey
方法,用于查找指定键名,忽略大小写及字符'-'/'_'/'.'/' '
;gvalid
i18n
来配置实现,以便支持国际化: https://goframe.org/util/gvalid/messageid-number
改为了resident-id
;luhn
改为了bank-card
;96%
;gcompress
的多文件zip
压缩问题;ghttp.Client
获取返回的过期Cookie
的问题;gres.File
对于http.File
接口的实现细节;garray.Pop*
方法的边界问题;gres
中Readdir
方法参数为0
时报错的问题; 1
CodeCore 2020-06-09 23:35:37 +08:00 via iPhone
赞赞赞赞
|
2
lovesky 2020-06-09 23:38:17 +08:00 via Android
一直在用 明天升级
|
3
sxfscool 2020-06-10 08:54:10 +08:00
自己造了这么多轮子么[捂脸]
|
4
vus520 2020-06-17 12:03:59 +08:00
封装之王。但我建议还是引入和直接使用 gin 和 echo 的相关的基础组件
|