GF(Go Frame) https://goframe.org 是一款模块化、高性能、生产级的Go基础开发框架。实现了比较完善的基础设施建设,包括常用的核心开发组件, 如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、 定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、并发安全容器等等。 并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等, 支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。
GF有着丰富的基础模块、完善的工具链、详尽的开发文档。开源近两年以来,GF得到越来越多小伙伴的肯定和支持,从寂寂无名到现在被广泛应用于微服务、物联网、区块链、电商系统、银行系统等企业级的生产项目中,经历了百万级、千万级项目的考验,2019年度被码云gitee评选为GVP最有价值开源项目。GF正在快速地成长中,目前保持着1-2个月迭代版本的发布规律,社区活跃,欢迎加入GF大家庭。
最后,祝大家2020新年快乐,鼠年大吉!
新特性
- 新年新气象,官网文档大量更新:https://goframe.org/index
GF工具链更新:https://goframe.org/toolchain/cli
- 新增
gf run热编译运行命令;
- 新增
gf docker Docker镜像编译命令;
- 新增
gf gen model 强大的模型自动生成命令;
gf build命令增加对配置文件配置支持;
- 大量命令行工具改进工作;
- 新增自动代理设置特性;
- 数据库
ORM新特性:
功能改进
container
garray
- 新增
New*ArrayRange方法,用于初始化创建指定数值范围的数组。
- 新增
Iterator*方法,用于数组项元素回调遍历。
- 完善单元测试。
gvar
- 改进
MapStrStr、MapStrStrDeep方法实现。
net
ghttp
- 改进HTTP客户端,增加对提交参数的自动
Content-Type识别功能。
Request对象增加Parse方法,用于快捷的对象转换即参数校验。
Request.GetPost*方法全部标记为deprecated,统一客户端参数提交方式为QueryString, Form, Body。
- 去掉
Response模板解析时的Get/Post内置变量,新增Query, Form, Request内置变量:https://goframe.org/net/ghttp/response/template
- 改进
Response.WriteJson*及Response.WriteXml*方法,增加对string, []byte类型参数的支持。
Server新增GetRouterArray方法,用于向应用层暴露并获取Server的路由列表。
Server新增Use方法,该方法为BindMiddlewareDefault的别名,用以全局中间件的注册。
Server新增RouteOverWrite配置项,用于控制是否在注册路由冲突时自动覆盖,默认关闭并提示。
Server新增Graceful配置项,用于在单服务场景下控制平滑重启特性的开启/关闭,默认开启。
- 完善单元测试。
gtcp
- 改进简单协议下的数据包发送接收功能。
- 将连接池默认的缓存过期时间
30秒修改为10秒。
- 完善单元测试。
database
-
gdb
- 新增
As数据表别名方法。
- 改进数据表、字段的安全字符自动识别添加功能。
- 新增
DB数据库对象切换方法。
- 新增
TX链式操作事务支持方法。
- 完善单元测试。
os
-
gcfg
-
gcmd
- 增加参数解析的
strict严格参数,默认严格解析,不存在指定参数/选项名称时则报错返回。
-
genv
-
gfile
- 改进
TempDir临时目录获取方法,在*nix系统下默认为/tmp目录。
- 新增
ReadLines, ReadByteLines方法,用以按行回调读取文件内容。
- 新增
Copy*方法,用以文件/目录的拷贝,支持递归。
- 新增
Replace*方法,用以目录下的文件内容替换,支持递归。
- 改进
Scan*方法,用以检索并返回指定目录下的所有文件/目录,支持文件模式指定,支持递归。
- 完善单元测试。
-
gproc
- 改进命令行运行方法。
- 改进
Shell命令文件检索逻辑。
- 改进实验性的进程间通信设计。
-
gtime
- 将包方法以及
Time对象的时间戳方法Second, Millisecond, Microsecond, Nanosecond标记为废除, 并新增Timestamp, TimestampMilli, TimestampMicro, TimestampNano替换。
- 需要注意的是以上修改可能和老版本存在兼容性问题。
-
gview
- 解析功能、缓存设计改进。
- 新增
encode, decodeHTML编码/解码模板函数。
- 新增
concat字符串拼接模板函数。
- 新增
dump模板函数,功能类似于g.Dump方法。
- 新增
AutoEncode配置项,用于自动转码输出的HTML内容,常用于防止XSS,默认关闭。需要注意的是该特性并不会影响include内置函数: https://goframe.org/os/gview/xss
- 单元测试完善。
crypto
gmd5
- 增加
MustEncrypt, MustEncryptBytes, MustEncryptString, MustEncryptFile方法。
gsha1
encoding
gbase64
- 新增
MustEncodeFile, MustEncodeFileToString, MustDecode, MustDecodeToString方法。
gjson/gparser
- 新增
GetMapStrStr方法。
- 新增
Must*方法,用于指定数据格式的转换失败时产生panic错误,而不会返回error参数。
util
gconv
- 改进
Convert方法增加对[]int32, []int64, []uint, []uint32, []uint64, []float32, []float64数据类型的转换支持。
- 改进
String字符串转换方法对指针参数的支持。
- 改进
Map* Map转换方法的代码结构及性能。
- 新增
Floats, Float32s, Float64s对[]float32, []float64类型转换方法。
- 新增
Ints, Int32s, Int64s对[]int, []int32, []int64类型转换方法。
- 新增
Uints, Uint32s, Uint64s对[]uint, []uint32, []uint64类型转换方法。
- 完善单元测试。
frame
gins
Bug Fix
- 增加对常见错误路由格式例如
/user//index的兼容支持。
- 修复
gtcp/gudp在数据接收时的间隔时间单位问题。
- 修复
gfile/gspath/gfsnotify包对文件的存在性判断不严谨问题。
- 修复
gproc.Kill方法在windows系统下的运行阻塞问题。
- 修复
gstr.TrimLeftStr/gstr.TrimRightStr在被替换字符串长度小于替换字符串长度时的数组溢出问题。