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 · 3828 次点击
    这是一个创建于 436 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近正在用 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 的电商网站当过同事加过好友所以对这个项目有所耳闻 ;)
    morebuff
        26
    morebuff  
       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   ·   实用小工具   ·   1552 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:07 · PVG 01:07 · LAX 09:07 · JFK 12:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.