V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
johng
V2EX  ›  Go 编程语言

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

  •  
  •   johng · 2020-01-13 20:50:31 +08:00 · 3855 次点击
    这是一个创建于 1556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    2. GF工具链更新: https://goframe.org/toolchain/cli
      • 新增gf run热编译运行命令;
      • 新增gf docker Docker 镜像编译命令;
      • 新增gf gen model 强大的模型自动生成命令;
      • gf build命令增加对配置文件配置支持;
      • 大量命令行工具改进工作;
      • 新增自动代理设置特性;
    3. 数据库ORM新特性:

    功能改进

    container

    1. garray
      • 新增New*ArrayRange方法,用于初始化创建指定数值范围的数组。
      • 新增Iterator*方法,用于数组项元素回调遍历。
      • 完善单元测试。
    2. gvar
      • 改进MapStrStrMapStrStrDeep方法实现。

    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配置项,用于在单服务场景下控制平滑重启特性的开启 /关闭,默认开启。
      • 完善单元测试。
    2. gtcp
      • 改进简单协议下的数据包发送接收功能。
      • 将连接池默认的缓存过期时间30秒修改为10秒。
      • 完善单元测试。

    database

    1. gdb
      • 新增As数据表别名方法。
      • 改进数据表、字段的安全字符自动识别添加功能。
      • 新增DB数据库对象切换方法。
      • 新增TX链式操作事务支持方法。
      • 完善单元测试。

    os

    1. gcfg

      • 新增GetMapStrStr方法。
    2. gcmd

      • 增加参数解析的strict严格参数,默认严格解析,不存在指定参数 /选项名称时则报错返回。
    3. genv

      • 改进Remove方法支持多个环境变量的删除。
    4. gfile

      • 改进TempDir临时目录获取方法,在*nix系统下默认为/tmp目录。
      • 新增ReadLines, ReadByteLines方法,用以按行回调读取文件内容。
      • 新增Copy*方法,用以文件 /目录的拷贝,支持递归。
      • 新增Replace*方法,用以目录下的文件内容替换,支持递归。
      • 改进Scan*方法,用以检索并返回指定目录下的所有文件 /目录,支持文件模式指定,支持递归。
      • 完善单元测试。
    5. gproc

      • 改进命令行运行方法。
      • 改进Shell命令文件检索逻辑。
      • 改进实验性的进程间通信设计。
    6. gtime

      • 将包方法以及Time对象的时间戳方法Second, Millisecond, Microsecond, Nanosecond标记为废除, 并新增Timestamp, TimestampMilli, TimestampMicro, TimestampNano替换。
      • 需要注意的是以上修改可能和老版本存在兼容性问题。
    7. gview

      • 解析功能、缓存设计改进。
      • 新增encode, decodeHTML 编码 /解码模板函数。
      • 新增concat字符串拼接模板函数。
      • 新增dump模板函数,功能类似于g.Dump方法。
      • 新增AutoEncode配置项,用于自动转码输出的HTML内容,常用于防止XSS,默认关闭。需要注意的是该特性并不会影响include内置函数: https://goframe.org/os/gview/xss
      • 单元测试完善。

    crypto

    1. gmd5
      • 增加MustEncrypt, MustEncryptBytes, MustEncryptString, MustEncryptFile方法。
    2. gsha1
      • 增加MustEncryptFile方法

    encoding

    1. gbase64
      • 新增MustEncodeFile, MustEncodeFileToString, MustDecode, MustDecodeToString方法。
    2. 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的兼容支持。
    2. 修复gtcp/gudp在数据接收时的间隔时间单位问题。
    3. 修复gfile/gspath/gfsnotify包对文件的存在性判断不严谨问题。
    4. 修复gproc.Kill方法在windows系统下的运行阻塞问题。
    5. 修复gstr.TrimLeftStr/gstr.TrimRightStr在被替换字符串长度小于替换字符串长度时的数组溢出问题。
    10 条回复    2020-03-17 23:26:25 +08:00
    loading
        1
    loading  
       2020-01-13 21:00:00 +08:00 via Android
    正在学,很受用,感谢。
    paoqi2048
        2
    paoqi2048  
       2020-01-13 22:14:46 +08:00
    还以为你们实现了自己的数据库驱动,不过也很了不起了
    T3RRY
        3
    T3RRY  
       2020-01-14 09:01:50 +08:00
    +1
    tairan2006
        4
    tairan2006  
       2020-01-14 09:16:59 +08:00 via Android
    感谢作者,不过不喜欢这种大而全的工具库…做好一件事就可以了
    thisisgpy
        5
    thisisgpy  
       2020-01-14 09:28:26 +08:00
    「从寂寂无名到现在被广泛应用于微服务、物联网、区块链、电商系统、银行系统等企业级的生产项目中,经历了百万级、千万级项目的考验」

    电商、银行,举个例子;
    百万级、千万级项目,举个例子。
    unicloud
        6
    unicloud  
       2020-01-14 12:11:28 +08:00
    正在学习 Go,感谢开源!
    notamail
        7
    notamail  
       2020-01-14 18:37:48 +08:00
    大公司项目可能不会用这种复杂的东西吧
    cloverzrg2
        8
    cloverzrg2  
       2020-01-15 10:49:12 +08:00
    这个库真的是啥都有。。。
    DelayNoMore
        9
    DelayNoMore  
       2020-02-22 18:34:12 +08:00
    还是用标准库的类型转换比较好,这个方法比较通用
    wzw
        10
    wzw  
       2020-03-17 23:26:25 +08:00 via iPhone
    Python 有没有类似的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5229 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:26 · PVG 17:26 · LAX 02:26 · JFK 05:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.