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 新年快乐,鼠年大吉!
GF
工具链更新: https://goframe.org/toolchain/cli
gf run
热编译运行命令;gf docker
Docker 镜像编译命令;gf gen model
强大的模型自动生成命令;gf build
命令增加对配置文件配置支持;ORM
新特性:
prefix
数据表前缀支持: https://goframe.org/database/gdb/configSchema
数据库对象并改进数据库切换特性: https://goframe.org/database/gdb/chaining/schemaWherePri
方法,用于自动识别主键的条件方法: https://goframe.org/database/gdb/chaining/selectcontainer
garray
New*ArrayRange
方法,用于初始化创建指定数值范围的数组。Iterator*
方法,用于数组项元素回调遍历。gvar
MapStrStr
、MapStrStrDeep
方法实现。net
ghttp
Content-Type
识别功能。Request
对象增加Parse
方法,用于快捷的对象转换即参数校验。Request.GetPost*
方法全部标记为deprecated
,统一客户端参数提交方式为QueryString
, Form
, Body
。Response
模板解析时的Get
/Post
内置变量,新增Query
, Form
, Request
内置变量: https://goframe.org/net/ghttp/response/templateResponse.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
GetMapStrStr
方法。gcmd
strict
严格参数,默认严格解析,不存在指定参数 /选项名称时则报错返回。genv
Remove
方法支持多个环境变量的删除。gfile
TempDir
临时目录获取方法,在*nix
系统下默认为/tmp
目录。ReadLines
, ReadByteLines
方法,用以按行回调读取文件内容。Copy*
方法,用以文件 /目录的拷贝,支持递归。Replace*
方法,用以目录下的文件内容替换,支持递归。Scan*
方法,用以检索并返回指定目录下的所有文件 /目录,支持文件模式指定,支持递归。gproc
Shell
命令文件检索逻辑。gtime
Time
对象的时间戳方法Second
, Millisecond
, Microsecond
, Nanosecond
标记为废除,
并新增Timestamp
, TimestampMilli
, TimestampMicro
, TimestampNano
替换。gview
encode
, decode
HTML 编码 /解码模板函数。concat
字符串拼接模板函数。dump
模板函数,功能类似于g.Dump
方法。AutoEncode
配置项,用于自动转码输出的HTML
内容,常用于防止XSS
,默认关闭。需要注意的是该特性并不会影响include
内置函数: https://goframe.org/os/gview/xsscrypto
gmd5
MustEncrypt
, MustEncryptBytes
, MustEncryptString
, MustEncryptFile
方法。gsha1
MustEncryptFile
方法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
panic
错误。/user//index
的兼容支持。gtcp
/gudp
在数据接收时的间隔时间单位问题。gfile
/gspath
/gfsnotify
包对文件的存在性判断不严谨问题。gproc.Kill
方法在windows
系统下的运行阻塞问题。gstr.TrimLeftStr
/gstr.TrimRightStr
在被替换字符串长度小于替换字符串长度时的数组溢出问题。 1
loading 2020-01-13 21:00:00 +08:00 via Android
正在学,很受用,感谢。
|
2
paoqi2048 2020-01-13 22:14:46 +08:00
还以为你们实现了自己的数据库驱动,不过也很了不起了
|
3
T3RRY 2020-01-14 09:01:50 +08:00
+1
|
4
tairan2006 2020-01-14 09:16:59 +08:00 via Android
感谢作者,不过不喜欢这种大而全的工具库…做好一件事就可以了
|
5
thisisgpy 2020-01-14 09:28:26 +08:00
「从寂寂无名到现在被广泛应用于微服务、物联网、区块链、电商系统、银行系统等企业级的生产项目中,经历了百万级、千万级项目的考验」
电商、银行,举个例子; 百万级、千万级项目,举个例子。 |
6
unicloud 2020-01-14 12:11:28 +08:00
正在学习 Go,感谢开源!
|
7
notamail 2020-01-14 18:37:48 +08:00
大公司项目可能不会用这种复杂的东西吧
|
8
cloverzrg2 2020-01-15 10:49:12 +08:00
这个库真的是啥都有。。。
|
9
DelayNoMore 2020-02-22 18:34:12 +08:00
还是用标准库的类型转换比较好,这个方法比较通用
|
10
wzw 2020-03-17 23:26:25 +08:00 via iPhone
Python 有没有类似的?
|