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

GoFrame v1.15 发布,企业级 Go 开发框架

  •  1
     
  •   johng · 2020-12-31 00:56:40 +08:00 · 3646 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好呀!自上次发布到现在,从初秋到深冬,我们也完全冇闲着哟,我们这次带来了爱心满满的GoFrame v1.15版本。此外,还有两件事:

    经过多年的潜心修炼和稳定发展,GoFrame已经逐步成长为了一款企业级的Golang基础开发框架,她提供了项目开发规范、开发工具链、完善的基础模块、丰富的开发文档、高代码质量以及活跃的社区。为保证框架质量,我们为各个组件进行了大量的单元测试以保证逻辑的正确(2534例测试单元,9097项测试断言),同时维护了高质量的文档,至今,已有很多的大型 /中小型互联网公司在生产环境使用GoFrame

    开源不易,有你们的理解和支持,幸福满满!感谢所有参与项目开发的小伙伴们,爱你们!GF, YES !

    GoFrame

    GF(Go Frame)是一款模块化、高性能、企业级的Go基础开发框架。实现了比较完善的基础设施建设以及开发工具链,提供了常用的基础开发模块,如:缓存、日志、队列、数组、集合、容器、定时器、命令行、内存锁、配置管理、资源管理、数据校验、定时任务、数据库ORMTCP/UDP组件、进程管理 /通信等等。并提供了Web服务开发的系列核心组件,如:RouterCookieSessionMiddleware、服务注册、模板引擎等等,支持热重启、热更新、域名绑定、TLS/HTTPSRewrite等特性。

    如果您初识Go语言,您可以将GoFrame类似于PHP中的Laravel, Java中的SpringBoot或者Python中的Django

    特点

    • 模块化、松耦合设计;
    • 模块丰富、开箱即用;
    • 简便易用、易于维护;
    • 高代码质量、高单元测试覆盖率;
    • 社区活跃,大牛谦逊低调脾气好;
    • 详尽的开发文档及示例;
    • 完善的本地中文化支持;
    • 设计为团队及企业使用;

    Change Logs

    1. ghttp
      • 改建HTTPClientGET请求相关方法,当传递参数时不再作为Body参数提交,而是自动构造为QueryString提交。以保证与其他服务端的兼容能力。
      • 请求对象Request增加默认值设置特性:
      • 增加Request.SetCtx方法,用于自定义上下文变量,常用于中间件 /拦截器中:
      • 模板解析中增加Request变量,用于获得客户端提交的请求参数,无论是QueryString/Form类型参数:
      • Cookie功能改进,如何设置与Session有效期保持一致的Cookie,请参考:Cookie#Cookie 会话过期
      • 分组路由注册增加ALLMap方法,用于批量注册路由:分组路由#批量注册
      • 新增CRSF插件介绍文档:
      • 其他一些功能及细节改进。
    2. gdb
      • 增加Ctx方法,用于异步IO控制或传递自定义的上下文信息,特别是链路跟踪信息:
      • 增加Raw类型,用于原始SQL语句嵌入,该语句将会直接提交到底层数据库驱动,不会做任何处理:写入保存#RawSQL 语句嵌入更新删除#RawSQL 语句嵌入
      • 改进Fields/Fields/Data方法,增加对输入map/struct参数与数据表字段的自动映射检测、过滤:
      • 增加InsertedAt/UpdatedAt/DeletedAt字段名称的配置,增加TimeMaintainDisabled配置可关闭时间填充及软删除特性:
      • 增加Counter更新特性,用于字段的增加 /减少操作:更新删除#Counter 更新特性
      • 改进ORM时区处理,详情请参考章节:
      • 其他关于性能和易用性的细节改进。
      • 一些细节问题改进。
      • 完善单元测试。
    3. gerror
      1. 增加Newf/NewSkipf方法创建错误对象:
      2. 增加对错误码特性的支持:
      3. 完善单元测试。
    4. gvalid
      • 增加phone-loose宽松手机号校验规则,只要满足 13/14/15/16/17/18/19开头的11位数字都可以通过验证。
      • 返回校验错误实现了gerrorCurrent() error接口,因此可以使用gerror.Current方法来获取当前第一条校验错误:
      • 其他细节改进。
      • 单元测试完善。
    5. gvar
      • 增加IsNil/IsEmpty方法,判断数据是否为nil/空
      • 增加IsInt/IsUint/IsFloat/IsSlice/IsMap/IsStruct常用类型判断方法。
      • 标注废弃StructDeep/StructDeep方法,直接使用Struct/Structs即可。
      • 完善单元测试。
    6. ghtml
      • 增加SpecialCharsMapOrStruct方法,用于自动转换map/struct键值 /属性中的HTML代码,防止XSS
    7. gjson
      • 标记废弃To*转换方法,例如:ToStruct替换为Struct方法。
      • 一些细节问题改进。
      • 单元测试完善。
    8. internal
      • 改进并完善internal/empty包的空值判断。
      • 由于性能问题 https://github.com/gogf/gf/issues/1004 ,临时删除了internal/json包中对第三方包 github.com/json-iterator/go 的依赖,还原为标准库encoding/json
      • 改进internal/structs包,由于该包在struct转换特性中使用比较频繁,因此去掉第三方包 github.com/gqcn/structs 的依赖,简化了反射处理逻辑,提高了性能以及易用性,提高了长期维护性。
      • internal/utils包增加RemoveSymbols方法,用于删除字符串中的特殊字母。改进EqualFoldWithoutChars方法,去掉对字符串中字符串的正则过滤功能,极大提高了方法性能。不要小看这两个小函数,性能的点滴改进能提高框架中其他涉及到复杂类型转换模块的性能。internal包虽然不直接对外暴露方法,但是却影响着框架中的一些核心组件性能。
    9. gcfg
    10. gcmd * 改进默认参数解析获取方式: * 增加GetWithEnv方法,当命令行中不存在指定参数时,同时从环境变量中获取:
    11. genv * 增加SetMap方法,用于批量设置环境变量。 * 增加GetWithCmd方法,当环境变量中不存在指定参数时,同时从命令行参数中获取:
    12. gfile * 标记废弃ReadByteLines方法,新增ReadLinesBytes方法。 * 调整ReadLines/ReadLinesBytes方法回调函数定义,增加error返回。
    13. glog * 改进滚动更新功能。 * 其他一些细节改进。
    14. gsession * 增加SetMap方法,用于批量设置键值对数据。
    15. gtimer * 常量名称改进,统一采用大驼峰方式。
    16. gview * 增加内置模板函数map,用于将参数转换为map[string]interface{}类型。 * 增加内置模板函数maps,用于将参数转换为[]map[string]interface{}类型。 * 增加内置模板函数json,用于将参数转换为JSON字符串类型。 * 文档更新: * 其他一些细节改进。
    17. gconv * 性能改进。 * 功能改进(细节改进有点多,实在不想写得太详细)。 * 代码更加健壮。 * 单元测试完善。
    18. gutil * 增加Keys方法,用于获取map/struct的键名 /属性名称,构造成数组返回。 * 增加Values方法,用于获取map/struct的键值 /属性值,构造成数组返回。 * 增加MapToSlice方法,例如:{"K1": "v1", "K2": "v2"} => ["K1", "v1", "K2", "v2"] * 增加StructToSlice方法,例如:{"K1": "v1", "K2": "v2"} => ["K1", "v1", "K2", "v2"] * 增加SliceToMap方法,例如: ["K1", "v1", "K2", "v2"] => {"K1": "v1", "K2": "v2"} * 单元测试完善。 * 其他细节改进。

    Bug Fix

    1. 修复garray/gmap/gtreeClone方法并发安全判断问题。
    2. 修复当设置了过期方法,但gpool在元素项过期时没有自动调用过期方法处理的问题。
    3. 修复gfile.ReadLInes/ReadLineBytes在数据量大时的读取重复问题。
    4. 其他一些错误修复。
    16 条回复    2020-12-31 23:23:40 +08:00
    wzw
        1
    wzw  
       2020-12-31 07:03:59 +08:00 via iPhone
    大大点赞,好用得很
    jkhere
        2
    jkhere  
       2020-12-31 09:42:51 +08:00
    给你点赞
    kaka6
        3
    kaka6  
       2020-12-31 09:52:19 +08:00
    赞,了解下
    fengjianxinghun
        4
    fengjianxinghun  
       2020-12-31 09:58:38 +08:00   ❤️ 2
    一看“企业”级的东西就不想用了。。
    prenwang
        5
    prenwang  
       2020-12-31 10:13:33 +08:00
    @fengjianxinghun 可以不用, 但是应该说句赞, 这么重大的日子。 不要对辛勤的劳动者吝啬你的赞美,
    danbai
        6
    danbai  
       2020-12-31 10:17:56 +08:00 via Android
    👍
    fenglangjuxu
        7
    fenglangjuxu  
       2020-12-31 11:14:23 +08:00 via iPhone
    支持
    johng
        8
    johng  
    OP
       2020-12-31 11:26:52 +08:00
    没太注意-这文档格式乱了,有的文档连接都丢了,改不了了- -!
    版本详细内容大家可以看下这里: https://itician.org/pages/viewpage.action?pageId=1116015
    lemayi
        9
    lemayi  
       2020-12-31 12:01:01 +08:00
    正在用,开发起来非常爽!
    SingeeKing
        10
    SingeeKing  
       2020-12-31 13:00:14 +08:00   ❤️ 2
    我特别想把 go-zero 的开发者 At 出来让你们 battle 一下哪个更好
    NaVient
        11
    NaVient  
       2020-12-31 14:47:51 +08:00
    这个框架是 她,至少为作者的态度点赞。
    Lemeng
        12
    Lemeng  
       2020-12-31 15:10:04 +08:00
    企业,支持一下
    Norths
        13
    Norths  
       2020-12-31 16:38:02 +08:00
    支持,正好在学习 go,学起来!
    ice2016
        14
    ice2016  
       2020-12-31 16:42:01 +08:00
    支持~~
    ADANMEI
        15
    ADANMEI  
       2020-12-31 17:49:53 +08:00
    加油,支持
    kevinwan
        16
    kevinwan  
       2020-12-31 23:23:40 +08:00
    @SingeeKing 巧了,我看到了,哈哈,强哥跟我交流蛮多的,百花齐放才是春👏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3108 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 00:15 · PVG 08:15 · LAX 17:15 · JFK 20:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.