GoFrame v1.11 发布, Go基础开发框架

johng · · 960 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

`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个月迭代版本的发布规律,社区活跃。 最后,祝大家2020新年快乐,鼠年大吉! ## 新特性 1. 新年新气象,官网文档大量更新:https://goframe.org/index 1. `GF`工具链更新:https://goframe.org/toolchain/cli - 新增`gf run`热编译运行命令; - 新增`gf docker` Docker镜像编译命令; - 新增`gf gen model` 强大的模型自动生成命令; - `gf build`命令增加对配置文件配置支持; - 大量命令行工具改进工作; - 新增自动代理设置特性; 1. 数据库`ORM`新特性: - 增加`prefix`数据表前缀支持:https://goframe.org/database/gdb/config - 新增`Schema`数据库对象并改进数据库切换特性:https://goframe.org/database/gdb/chaining/schema - 新增`WherePri`方法,用于自动识别主键的条件方法:https://goframe.org/database/gdb/chaining/select - 文档及示例大量更新,覆盖95%以上的功能特性; ## 功能改进 ### `container` 1. `garray` - 新增`New*ArrayRange`方法,用于初始化创建指定数值范围的数组。 - 新增`Iterator*`方法,用于数组项元素回调遍历。 - 完善单元测试。 1. `gvar` - 改进`MapStrStr`、`MapStrStrDeep`方法实现。 ### `net` 1. `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`配置项,用于在单服务场景下控制平滑重启特性的开启/关闭,默认开启。 - 完善单元测试。 1. `gtcp` - 改进简单协议下的数据包发送接收功能。 - 将连接池默认的缓存过期时间`30`秒修改为`10`秒。 - 完善单元测试。 ### `database` 1. `gdb` - 新增`As`数据表别名方法。 - 改进数据表、字段的安全字符自动识别添加功能。 - 新增`DB`数据库对象切换方法。 - 新增`TX`链式操作事务支持方法。 - 完善单元测试。 ### `os` 1. `gcfg` - 新增`GetMapStrStr`方法。 1. `gcmd` - 增加参数解析的`strict`严格参数,默认严格解析,不存在指定参数/选项名称时则报错返回。 1. `genv` - 改进`Remove`方法支持多个环境变量的删除。 1. `gfile` - 改进`TempDir`临时目录获取方法,在`*nix`系统下默认为`/tmp`目录。 - 新增`ReadLines`, `ReadByteLines`方法,用以按行回调读取文件内容。 - 新增`Copy*`方法,用以文件/目录的拷贝,支持递归。 - 新增`Replace*`方法,用以目录下的文件内容替换,支持递归。 - 改进`Scan*`方法,用以检索并返回指定目录下的所有文件/目录,支持文件模式指定,支持递归。 - 完善单元测试。 1. `gproc` - 改进命令行运行方法。 - 改进`Shell`命令文件检索逻辑。 - 改进实验性的进程间通信设计。 1. `gtime` - 将包方法以及`Time`对象的时间戳方法`Second`, `Millisecond`, `Microsecond`, `Nanosecond`标记为废除, 并新增`Timestamp`, `TimestampMilli`, `TimestampMicro`, `TimestampNano`替换。 - 需要注意的是以上修改可能和老版本存在兼容性问题。 1. `gview` - 解析功能、缓存设计改进。 - 新增`encode`, `decode`HTML编码/解码模板函数。 - 新增`concat`字符串拼接模板函数。 - 新增`dump`模板函数,功能类似于`g.Dump`方法。 - 新增`AutoEncode`配置项,用于自动转码输出的`HTML`内容,常用于防止`XSS`,默认关闭。需要注意的是该特性并不会影响`include`内置函数: https://goframe.org/os/gview/xss - 单元测试完善。 ### `crypto` 1. `gmd5` - 增加`MustEncrypt`, `MustEncryptBytes`, `MustEncryptString`, `MustEncryptFile`方法。 1. `gsha1` - 增加`MustEncryptFile`方法 ### `encoding` 1. `gbase64` - 新增`MustEncodeFile`, `MustEncodeFileToString`, `MustDecode`, `MustDecodeToString`方法。 1. `gjson`/`gparser` - 新增`GetMapStrStr`方法。 - 新增`Must*`方法,用于指定数据格式的转换失败时产生`panic`错误,而不会返回`error`参数。 ### `util` 1. `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` 1. `gins` - 所有的单例对象在获取失败时产生`panic`错误。 ## Bug Fix 1. 增加对常见错误路由格式例如`/user//index`的兼容支持。 1. 修复`gtcp`/`gudp`在数据接收时的间隔时间单位问题。 1. 修复`gfile`/`gspath`/`gfsnotify`包对文件的存在性判断不严谨问题。 1. 修复`gproc.Kill`方法在`windows`系统下的运行阻塞问题。 1. 修复`gstr.TrimLeftStr`/`gstr.TrimRightStr`在被替换字符串长度小于替换字符串长度时的数组溢出问题。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

960 次点击  
加入收藏 微博
1 回复  |  直到 2020-01-14 10:38:33
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传