goframe 框架好吗?我感觉怪怪的。。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dyllen
V2EX    Go 编程语言

goframe 框架好吗?我感觉怪怪的。。。

  •  
  •   dyllen 2023-09-12 10:54:40 +08:00 4812 次点击
    这是一个创建于 827 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近正在用 goframe 做项目,公司定的用这个框架。

    目录分层设计虽然讲了很多道理,但是感觉很蛋痛,和 go 的其他项目风格完全不一样。

    因为框架的目录分层设计,搞了很多没有代码生成工具那要搞死人的代码目录,所以就有了 gf gen 命令。。。

    就是感觉怪怪的,个人不喜欢,把问题复杂化了,感觉就是为了设计而设计,虽然文档讲了很多理论来支撑,这样真的好吗?

    小菜鸟角度看来。

    30 条回复    2023-09-13 14:01:09 +08:00
    lifespy
        1
    lifespy  
       2023-09-12 11:06:45 +08:00
    有不方便,也有好处,到一定量才能体现出来
    Nazz
        2
    Nazz  
       2023-09-12 11:07:44 +08:00
    公司要求用的话, 不喜欢也没办法了
    skiy
        3
    skiy  
       2023-09-12 11:21:46 +08:00
    这框架是参考 Laravel 的,所以有 Laravel 经验会好些。

    另外,它这框架有时候小版本升级偶尔也会有 breaking ,特别是 ORM 部分。
    其次,我用它的框架根本就不用 gf gen 相关命令,其实这个应该说,框架与它并无直接关联,完全不影响单独使用框架。
    jackdou
        4
    jackdou  
       2023-09-12 11:22:26 +08:00
    新手入门比较简单的框架了,service 目录实现单例化同时又可以防止循环引用。弄得复杂确实是为了大型工程考虑,小工程怎么来都无所谓
    28Sv0ngQfIE7Yloe
        5
    28Sv0ngQfIE7Yloe  
       2023-09-12 11:30:06 +08:00
    经历过多人协作并且大家都乱写,你就知道有这么一个看起来繁重的标准是多么好了。。
    dyllen
        6
    dyllen  
    OP
       2023-09-12 11:37:57 +08:00
    @skiy 不是说 v1 是参考 PHP 的框架,V2 是 Java 框架吗?
    shunwei
        7
    shunwei  
       2023-09-12 11:49:30 +08:00
    其实照着用也挺省心的, 工具类也很齐全
    iosyyy
        8
    iosyyy  
       2023-09-12 11:52:31 +08:00
    挺好的 很多时候框架简单的后果就是整个项目撑不起来
    skiy
        9
    skiy  
       2023-09-12 12:00:22 +08:00
    @dyllen 哪怕是 v2 ,肯定也没跳出 v1 ,而且,作者原来好像是 PHP 开发。

    很久没使用它了,所以不太了解现在。现在用字节跳动的 kitex 。
    ClarkAbe
        10
    ClarkAbe  
       2023-09-12 12:22:10 +08:00 via Android
    gf1 很不错...gf 2 就算了...分层有点太奇怪了...就像自己不是在写 golang 而是在写 gflang 一样奇怪...
    sunmoon1983
        11
    sunmoon1983  
       2023-09-12 12:43:03 +08:00
    从 goFrame1 走过来,一直感觉不错
    wzw
        12
    wzw  
       2023-09-12 12:58:24 +08:00 via iPhone
    我还在用 v1 ,v2 尝试了,后面升还是换再看看
    ruoge3s
        13
    ruoge3s  
       2023-09-12 13:14:38 +08:00
    越来越复杂...
    dyllen
        14
    dyllen  
    OP
       2023-09-12 14:00:36 +08:00
    @ClarkAbe 我也是觉得分层很奇怪,感受不是很好,估计之前搞 Java 的比较能接受。
    dyllen
        15
    dyllen  
    OP
       2023-09-12 14:01:29 +08:00
    @skiy 我是从 v2 开始用的,说是 v1 和 v2 完全不一样。
    zyxk
        16
    zyxk  
       2023-09-12 14:18:48 +08:00
    功能全的,除了 gf 还能有什么选择
    skiy
        17
    skiy  
       2023-09-12 14:20:57 +08:00
    @dyllen 怎么可能完全不一样呢?完全不一样的话,构架就得改名了。我刚瞄了下路由,还是原来的配方。变化肯定是有的,但完全不一样是不可能的。

    不过,v1 或 v2 对于我来说,其实没差,很容易上手。但无论如何,我都不会用 gf gen 的,工具问题太多了。群里面经常见到有人提问题。
    dyllen
        18
    dyllen  
    OP
       2023-09-12 15:02:11 +08:00
    @skiy 我也是看别人写的,gf 工具是问题多多,昨天刚用了,生成的 model 没数据类型,看了下 issue ,反馈最少一周以上了,刚发布的最新版竟然还是没改,回退旧版用了。
    但是你不用 gf gen ,就麻烦了,哪些代码手动写要符合框架的规范要搞死,除非你不走框架的那一套规范。
    skiy
        19
    skiy  
       2023-09-12 15:13:11 +08:00
    @dyllen 建议加群问,作者还是挺热心的。
    lyhapple
        20
    lyhapple  
       2023-09-12 15:27:56 +08:00
    上周因为自己想做点小项目,正好体验了两天,gen sevice 生成代码那一块感觉不太好用,要先去写 logic 目录代码,没法自动生成,整体用下来仍然感觉不够快速, 也可能是我使用的姿势不对 :)
    dog82
        21
    dog82  
       2023-09-12 15:52:53 +08:00
    其实用哪个框架,区别真不大,程序员不能太纠结用啥技术
    guonaihong
        22
    guonaihong  
       2023-09-12 16:42:54 +08:00   1
    gf 和 go-zero 我选后者。

    上面的选择主要基于清晰度,gf 眼花缭乱的基础类型,看别人用 gf 写的代码清晰度绕来绕去不知所云。

    还有一个是担心 gf 代码质量,记得看同事的代码用了.gVar , 就扫了一眼 gf 里面的 gVar 的 New 的实现。发现一个 bool 变量的语义写反了,这是一个 bug(后面和同事说了下,应该提 pr 修复了)。

    最后如果 gf 作者能看到我的回答,有些建议:
    1. 基础类型没必须 type 一个新类型,只会分裂认识。
    2. json/xml 等等基础能力没有必须再包装下,同一。
    3. 观注能提升生产力的地方,静态 MVC ,统一数据结构,然后根据这些数据结构生成一些 logic 代码。
    dongtingyue
        23
    dongtingyue  
       2023-09-12 18:50:58 +08:00
    Javaer 将理念带到 php 出来了 Laravel 现在又将理念带到 go ?
    gowk
        24
    gowk  
       2023-09-12 19:15:54 +08:00
    gf 确实有点复杂,而且 Go 用来做业务,我也不是很推荐,if err != nil 写起来很蛋疼
    我现在用 .NET 7 写后端业务,无比丝滑
    qieqie
        25
    qieqie  
       2023-09-12 19:34:58 +08:00
    和上面大部分意见相反,我倒是觉得小的项目可以用大而全框架来快速启动,大型项目应该精心选择贴合架构,性能和可定制性足够好的轮子来组合。

    我没用过 GoFrame ,不过多年前和作者在某个写 PHP 的电商网站当过同事加过好友所以对这个项目有所耳闻 ;)
    bianxiaoxian
        26
    bianxiaoxian  
       2023-09-12 20:16:31 +08:00
    大而全的框架不建议用,全部依赖吊死在一个树上,局部出现问题,全局也不好搞,还是自己组合,哪块有问题,可以单独替换
    dyllen
        27
    dyllen  
    OP
       2023-09-13 10:50:18 +08:00
    @gowk 十行代码 err != nil 占了 6 行,确实有点蛋痛。
    thinkingbullet
        28
    thinkingbullet  
       2023-09-13 11:19:25 +08:00
    个人比较喜欢 gf 框架使用快两年了,公司的项目比较大,多人开发的时候十分方便
    lilei2023
        29
    lilei2023  
       2023-09-13 13:32:56 +08:00
    作为一个初学者,感觉很适合,不用关心太多的非业务模块,基本上都配置好了,只管写逻辑就行
    czyt
        30
    czyt  
       2023-09-13 14:01:09 +08:00
    kratos
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5220 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 08:28 PVG 16:28 LAX 00:28 JFK 03:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86