V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
henryisme
V2EX  ›  程序员

2022 年了,目前的 go web 框架 Gin Beego Iris 如何选择?

  •  
  •   henryisme · 118 天前 · 5229 次点击
    这是一个创建于 118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Gin ?
    Beego ?
    Iris ?

    各位 V 友说下使用的心得呀!
    68 条回复    2022-04-22 21:02:36 +08:00
    Oktfolio
        1
    Oktfolio  
       118 天前
    用 :param 作为路径参数的我不选。对,说的就是 gin
    bootvue
        2
    bootvue  
       118 天前
    gin
    eurry
        3
    eurry  
       118 天前
    个人更倾向 Iris ,但 Gin 用的人多
    plutome
        4
    plutome  
       118 天前   ❤️ 4
    Gin ,Iris 都用过,各有优劣吧。

    Beego 这玩意,真的不好说什么。
    个人而言,是跟 CSDN 并列在一起的东西。
    henryisme
        5
    henryisme  
    OP
       118 天前
    gin 貌似简单性能好些
    SenLief
        6
    SenLief  
       118 天前
    ehco 也挺好用的啊
    beixiao
        7
    beixiao  
       118 天前 via iPhone
    go-zero
    jonathanchoo
        8
    jonathanchoo  
       118 天前
    Beego ?狗都不用
    gowk
        9
    gowk  
       118 天前
    fiber? goframe?
    Akashic
        10
    Akashic  
       118 天前
    用过 iris gin ,个人建议 gin ,go [官方教程]( https://go.dev/doc/tutorial/web-service-gin ) 也是用的 gin 为例子,有点钦定的感觉
    gogogo1203
        11
    gogogo1203  
       118 天前
    个人用过 gorilla , httptreemux. 没有什么大的区别。。。。。。
    wzw
        12
    wzw  
       118 天前 via iPhone
    我用 goframe ,有没有相同的
    bjfane
        13
    bjfane  
       118 天前
    为什么 beego 这么差,我 2014 年的时候用过 beego ,是说 beego 没更新 还是说 beego 太重了?
    wunonglin
        14
    wunonglin  
       118 天前
    go echo 。gin 不好用
    loveuer
        15
    loveuer  
       118 天前
    fiber 不错, 就是 fasthttp 资源复用的问题要多注意
    Mitt
        16
    Mitt  
       118 天前
    推荐 echo ,其实感觉不是很理解看中 gin 什么
    Hanggi
        17
    Hanggi  
       118 天前   ❤️ 6
    觉得 Gin 的路由不好用的,推荐一种解决方法,很多大厂也在用。

    就是需要进入 wildcard 时添加一个 URL 安全的符号。

    类似:
    /v1/articles/+/:id
    这样就不会跟下面的有冲突。
    /v1/articles/foo

    也可以使用其他一些符号
    /v1/articles/-/:id

    具体怎么用可以自行规划,比如 + 号就接 id ,或者其他规则。
    panlatent
        18
    panlatent  
       118 天前
    推荐 echo 吧
    panlatent
        19
    panlatent  
       118 天前
    刚入门 go 的时候想用一些库构建一个全栈框架来着,没成,但除了一些全栈框架 gin iris echo 还有些其他的都试了一个遍,只有 echo 是让我感觉最舒服且最终选用的。
    drackzy
        20
    drackzy  
       118 天前
    Beego 不怎么维护。
    GTim
        21
    GTim  
       118 天前
    @Hanggi 的确,大部分其实就是一个 id 的事情,其它参数能放在 query 的绝对不放在 path 里
    biubiuF
        22
    biubiuF  
       118 天前
    各种框架都差不多的,其实.
    roundgis
        23
    roundgis  
       118 天前 via Android
    @wzw 握手
    fyibmsd
        24
    fyibmsd  
       118 天前
    beego 狗都不用
    airplayxcom
        25
    airplayxcom  
       118 天前 via iPhone
    beego 一个函数名称都能产生歧义,比如 GetString ,也能接收 post 请求,哈哈😄,反正我是不想这么懒的写法。
    1more
        26
    1more  
       118 天前
    gin 吧,中规中矩
    iwdmb
        27
    iwdmb  
       118 天前
    echo
    Gin 的路由不好用
    iwdmb
        28
    iwdmb  
       118 天前
    @Hanggi echo 的 router 完美解決這個問題
    helone
        29
    helone  
       118 天前
    fiber
    add1commit
        30
    add1commit  
       118 天前 via iPhone
    插眼关注一下这个帖子
    qq1340691923
        31
    qq1340691923  
       118 天前 via Android
    fiber
    Trim21
        32
    Trim21  
       118 天前 via Android
    在用 fiber
    musi
        33
    musi  
       118 天前 via iPhone
    echo
    cctv1005s927
        34
    cctv1005s927  
       118 天前
    echo
    RedisMasterNode
        35
    RedisMasterNode  
       118 天前
    @Mitt 感觉是自定义和扩展的能力吧,gin 本身提供的 feature 不是很多,它不是 django 那种大包大揽全集成的框架,更像 flask 很多东西都得自己开发。用 go 的大公司居多,有独立开发脚手架、扩展插件,或者对整个框架二次开发的能力,所以选用 gin 的挺多的
    charmToby
        36
    charmToby  
       118 天前
    自己用过 gin iris ,公司项目用的 iris ,感觉区别不是很大。
    gsanidt
        37
    gsanidt  
       118 天前
    gin ,go-zero
    LoNeFong
        38
    LoNeFong  
       118 天前
    用:param 作为路径参数的我觉得挺好 对 我说的就是 gin
    ikaros
        39
    ikaros  
       118 天前
    纯 json/rpc api 推荐 gokit

    非前后端分离推荐 echo/gin
    fengjianxinghun
        40
    fengjianxinghun  
       118 天前
    @Hanggi 原来如此,我用 gin 就被这个苦恼了一阵
    bigbigpark
        41
    bigbigpark  
       118 天前
    goframe 路过
    Hellert
        42
    Hellert  
       118 天前 via Android
    net/http 的路过
    haha512
        43
    haha512  
       118 天前
    无论任何语言,鄙视国内开发者开发的框架,好像都成了政治正确,其他能把一个框架开发到那个程度,都是高手了,而鄙视的,多数都是出于无知或优越感爆棚
    FightPig
        44
    FightPig  
       118 天前
    别用 Beego 就行,这玩意儿有个 bug 几年前提的到现在还在,也没人管过,我也是服的
    iwdmb
        45
    iwdmb  
       118 天前
    @RedisMasterNode
    你講的這些 Gin 的優點 Echo 一樣有
    更何況 Echo 還是基於 net/http
    認真講 Gin 單純只是營銷厲害而已
    Echo 光 Router 的便利性就贏 Gin 十條街

    前公司 labstack/echo 用在每秒數千 TPS 的服務完全沒問題
    iwdmb
        46
    iwdmb  
       118 天前
    寫 API 業務用 Gin 的 Router 真的自找麻煩
    性能也沒有真的很顯著的優勢
    securityCoding
        47
    securityCoding  
       118 天前 via Android
    @haha512 很多人喜欢装逼你懂的。轮子数不胜数,有缺点说缺点,带情绪输出的都是菜鸡
    sb137885
        48
    sb137885  
       117 天前
    Beego ?狗都不用
    liuxu
        49
    liuxu  
       117 天前
    gin 和 fiber
    snowlyg
        50
    snowlyg  
       117 天前
    听领导的
    g1eny0ung
        51
    g1eny0ung  
       117 天前   ❤️ 7
    如果你看重稳定且灵活的 Router ,那么不推荐用 Gin 。Gin 过去一直使用了 httprouter ,但是为了追求性能它的 prefix tree 结构只支持 explicit matches 。曾经 https://github.com/julienschmidt/httprouter/pull/329 这个 PR 尝试过加入 mixed params 来改善这个问题。虽然 httprouter 没有合并这个 PR 但是这个改动被 Gin 合进去了。但是这种在不合适的结构中强行 patch 的改善出现了很多 bug ,我曾经也提过 PR: https://github.com/gin-gonic/gin/pull/2706 去修复我遇到的问题。

    但是关键的是 Gin 的 maintainers 基本不再参与开发了,你未来可能会遇到很多问题需要自己解决。就我个人的贡献经历来看,他们会期望你去解决问题,自己却不太想深入问题的所在。

    这点在最近的 commits 中都有体现,可以对比一下 Gin 和 Echo 的提交,你会发现 Echo 相比之下活跃的多得多。

    而且从我的使用来看,我交 PR 的时候也做过 benchmark ,Gin 主推的性能并没有他们所说的那么好,没有那么好是因为其他的框架也没有那么差。所以除了这点以外,Gin 其实没有什么 features 可以值得留恋的了。

    我也用过 Echo ,各方面都很不错,可以说是一个标准的现代后端框架了。所以我推荐 Echo ,Gin 现在可以说是从各方面都远远落后了。
    keepeye
        52
    keepeye  
       117 天前
    我用的 iris.. 用习惯了 组件比较多
    RedisMasterNode
        53
    RedisMasterNode  
       117 天前
    @iwdmb 下次可以试试。不过说什么营销厉害的,感觉不太赞同,讲这些没有意思,工具或者团队是需要有合适的人来运营,这不是比较的理由,你只需要强调出你推荐的工具的优点就足够了
    concernedz
        54
    concernedz  
       117 天前
    强推 goframe 和 go-zero
    chenhaifeng
        55
    chenhaifeng  
       117 天前
    目前正式项目微服务使用 go-zero ,单体用 fiber ,简单好用。
    fsdfds
        56
    fsdfds  
       117 天前
    无脑 goframe
    bzj
        57
    bzj  
       117 天前
    @airplayxcom 又菜又爱说
    captain2011
        58
    captain2011  
       117 天前
    老手就 gin 吧,新手 begoo 比较友好店,gin 感觉官方再推
    ksco
        59
    ksco  
       117 天前
    https://github.com/beego/beego/blob/develop/client/orm/db.go#L1068-L1108

    看看这个 12 层的嵌套,就不说好不好用了,你敢用吗?
    LcDraven
        60
    LcDraven  
       117 天前
    我刚用 gin 重构完 python 的 flask
    blackbeans
        61
    blackbeans  
       117 天前
    我也推荐 echo,写起来极为顺手,而且很简洁。
    haolongsun
        62
    haolongsun  
       117 天前
    @ksco 典中典,有点地狱回调那味道了。
    SorcererXW
        63
    SorcererXW  
       117 天前
    还是 Echo 最好用
    lesismal
        64
    lesismal  
       117 天前
    可以试试我这个,rpc 框架一把梭,request 、推送、广播,随便弄:

    websocket:
    github.com/lesismal/arpc/tree/master/examples/webchat

    websocket+http:
    github.com/lesismal/arpc/tree/master/examples/httprpc
    lesismal
        65
    lesismal  
       117 天前
    @haha512 #43 也不全是因为政治正确,因为确实很多国人项目 KPI 导向、污染了环境,也不能全怪国人作者,因为一些厂就有这些 KPI 指标,跟内卷是一个道理,都是资本家逼的

    @securityCoding #47 有一些知名的项目臭大街的程度也比较高、已经有无数人喷过了,所以也并不都是装逼而喷,得就事论事
    lesismal
        66
    lesismal  
       117 天前   ❤️ 1
    有一些号称微服务的框架挺火的,但其实微服务哪有什么框架,就是一些基础组件稍微封装下罢了,很多基础组件又是封装下别人的库、自己另外起个名字、然后就号称自己实现了一套 xxx 了

    这些项目都是脚手架类型,更大程度上是一种工程模板,称作框架都有点高抬了
    xsen
        67
    xsen  
       116 天前
    go-zero+1
    airplayxcom
        68
    airplayxcom  
       116 天前 via iPhone
    @bzj 啊对对对
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3266 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 04:23 · PVG 12:23 · LAX 21:23 · JFK 00:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.