v1.10.0
各位gfer 久等了,较上一次发布时间过去已有两个多月了,这段时间GF 也在不断地迭代改进,细节比较多,拟了个大概,以下是release log 。
另外,GoFrame 也参加了2019最受欢迎中国开源软件评选投票,明天就结束了,欢迎为GF 投票啊:https://www.oschina.net/project/top_cn_2019 网页可以投一票,微信也可以投一票。
新特性
Web Server 新特性:
Session 增加内置的多种Storage 实现:
- 增加日志组件单例对象,并优化配置管理:
- 常用的
container 容器增加JSON 数据格式的Marshal /UnMarshal 接口实现:
- 新增
guuid 模块,用于通用的UUID 生成:https://goframe.org/util/guuid/index
功能改进
net
ghttp
- 改进请求流程处理性能;
Server 增加对Logger 日志对象的配置;Server 开放了GetRouterMap 方法,用于获得当前服务的路由列表信息,使得开发者可以更方便地实现自定义权限管理;Server 配置管理优化;Client 客户端对象进行了大量的改进工作;Client 客户端对象增加多文件上传功能;Request 对象增加GetError 方法,用于获取当前处理错误;Request 对象增加独立的视图对象及视图变量绑定功能,使得每个请求可以独立视图管理,也可以通过中间件切换请求对象的视图对象。默认情况下该功能关闭,视图解析时使用的是Server 对象的视图对象;- 改建
Response 对象的CORS 功能; - 增加
Response.WriteTplDefault 方法,用于解析并返回默认的模板内容; - 增加更多的单元测试用例;
- 其他改进;
gipv4 /gipv6
gtcp /gudp
database
gdb
gredis
os
gcache
- 需要注意了:缓存的有效时间参数从
interface{} 类型调整为了time.Duration 类型,因此不再兼容之前的int 参数类型,以保证更好的性能;
gfcache
- 由于
gcache 组件的缓存时间参数类型的变更,因此该组件的时间参数也变更为了time.Duration 类型;
gcfg
- 增加
Available 方法,用以判断配置是否有效;
gfile
gtime
- 增加
JSON 数据格式的Marshal /UnMarshal 接口实现;
container
gmap
- 增加
MapStrAny 方法,用于常见map 类型的转换; - 增加
MapCopy 方法,用于底层map 数据复制; - 增加
FilterEmpty 方法,用于map 空值过滤; - 增加
Pop /Pops 方法,用于随机返回map 中的数据项(并删除); - 增加
Replace 方法,用于给定的map 数据覆盖底层map 数据项; - 完善单元测试;
- 其他改进;
garray
- 增加
Interfaces 转换方法,返回[]interface{} 类型; - 对排序数组增加
SetComparator 方法用户自定义修改比较器; - 完善单元测试;
- 其他改进;
glist
- 增加
NewFrom 方法,基于给定的[]interface{} 变量创建链表; - 增加
Join 方法,用于将链表项使用给定字符串连接为字符串返回; - 完善单元测试;
- 其他改进;
gset
- 增加
AddIfNotExistFunc /AddIfNotExistFuncLock 方法; - 完善单元测试;
- 其他改进;
gtree
- 增加
Replace 方法,用于更新现有树的数据项; - 其他改进;
gtype
- 一些细节改进工作,不一一列出;
- 完善基准测试、单元测试;
gvar
crypto
gmd5
gsha1
text
gstr
- 改进
SplitAndTrim 方法,将SplitAndTrimSpace 标记为deprecated ; - 增加
TrimStr 方法; - 完善单元测试;
- 其他改进;
debug
gdebug
- 增加
CallerFileLineShort /FuncPath /FuncName 方法; - 其他改进;
encoding
gbase64
- 增加
EncodeToString /EncodeFile /EncodeFileToString /DecodeToString 方法; - 完善单元测试;
gjson
frame
g /gins
util
gconv
- 改进优化部分类型转换方法性能;
- 增加
Uints /SliceUint 类型转换方法; - 增加
UnsafeStrToBytes /UnsafeBytesToStr 高性能的类型转换方法; - 增加对
MapStrAny 接口方法的支持,用于常见map 类型的转换; - 其他改进;
gvalid
- 改进对中国身份证号的识别校验功能;
- 增加
luhn {敏感词}号的校验功能;
grand
Bug Fix
- 解决
WebSocket 关闭时的hijacked 报错问题:https://github.com/gogf/gf/issues/381 - 解决静态文件服务时大文件的内存占用问题;
- 修复前置
Nginx 后默认情况下的Cookie 域名设置问题; - 修复
gconv.Struct 在属性为[]struct 并且输入属性参数为空时的转换失败问题:https://github.com/gogf/gf/issues/405 - 其他一些修复;
GF(Go Frame) 是一款模块化、高性能、生产级Go应用开发框架。提供了常用的核心开发组件,如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、定时任务、数据库ORM、TCP/UDP组件、进程管理/通信、
并发安全容器等等。并提供了Web服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等,支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite等特性。
特点
- 模块化、松耦合设计;
- 模块丰富,开箱即用;
- 详尽的开发文档及示例;
- 完善的本地中文化支持;
- 致力于项目的通用方案;
- 更适合企业及团队使用;
- 更多请查阅文档及源码;
安装
go get -u -v github.com/gogf/gf
推荐使用 go.mod :
require github.com/gogf/gf latest
限制
golang版本 >= 1.10
架构
文档
开发文档:https://goframe.org
接口文档:https://godoc.org/github.com/gogf/gf
使用
package main
import (
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/net/ghttp"
)
func main() {
s := g.Server()
s.BindHandler("/", func(r *ghttp.Request) {
r.Response.Write("Hello World")
})
s.Run()
}
更多..
协议
GF 使用非常友好的 MIT 开源协议进行发布,永久100% 开源免费。
|