2022 年了,目前的 go web 框架 Gin Beego Iris 如何选择? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
henryisme
V2EX    程序员

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

  •  
  •   henryisme 2022-04-20 17:34:53 +08:00 10988 次点击
    这是一个创建于 1272 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Gin ?
    Beego ?
    Iris ?

    各位 V 友说下使用的心得呀!
    69 条回复    2022-11-17 09:45:19 +08:00
    Oktfolio
        1
    Oktfolio  
       2022-04-20 17:37:47 +08:00
    用 :param 作为路径参数的我不选。对,说的就是 gin
    bootvue
        2
    bootvue  
       2022-04-20 17:40:52 +08:00
    gin
    eurry
        3
    eurry  
       2022-04-20 18:16:13 +08:00
    个人更倾向 Iris ,但 Gin 用的人多
    plutome
        4
    plutome  
       2022-04-20 18:19:36 +08:00   4
    Gin ,Iris 都用过,各有优劣吧。

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

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

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

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

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

    非前后端分离推荐 echo/gin
    fengjianxinghun
        40
    fengjianxinghun  
       2022-04-21 10:46:16 +08:00
    @Hanggi 原来如此,我用 gin 就被这个苦恼了一阵
    bigbigpark
        41
    bigbigpark  
       2022-04-21 11:38:30 +08:00
    goframe 路过
    Hellert
        42
    Hellert  
       2022-04-21 11:40:12 +08:00 via Android
    net/http 的路过
    haha512
        43
    haha512  
       2022-04-21 11:49:15 +08:00
    无论任何语言,鄙视国内开发者开发的框架,好像都成了政治正确,其他能把一个框架开发到那个程度,都是高手了,而鄙视的,多数都是出于无知或优越感爆棚
    FightPig
        44
    FightPig  
       2022-04-21 11:52:35 +08:00
    别用 Beego 就行,这玩意儿有个 bug 几年前提的到现在还在,也没人管过,我也是服的
    iwdmb
        45
    iwdmb  
       2022-04-21 12:06:20 +08:00
    @RedisMasterNode
    你的些 Gin 的 Echo 一有
    更何 Echo 是基於 net/http
    真 Gin 只是害而已
    Echo 光 Router 的便利性就 Gin 十街

    前公司 labstack/echo 用在每秒千 TPS 的服完全
    iwdmb
        46
    iwdmb  
       2022-04-21 12:08:42 +08:00
    API 用 Gin 的 Router 真的自找麻
    性能也有真的很著的
    securityCoding
        47
    securityCoding  
       2022-04-21 12:09:40 +08:00 via Android
    @haha512 很多人喜欢装逼你懂的。轮子数不胜数,有缺点说缺点,带情绪输出的都是菜鸡
    sb137885
        48
    sb137885  
       2022-04-21 13:30:26 +08:00
    Beego ?狗都不用
    liuxu
        49
    liuxu  
       2022-04-21 13:54:50 +08:00
    gin 和 fiber
    snowlyg
        50
    snowlyg  
       2022-04-21 14:08:53 +08:00
    听领导的
    g1eny0ung
        51
    g1eny0ung  
       2022-04-21 14:15:01 +08:00   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  
       2022-04-21 14:19:21 +08:00
    我用的 iris.. 用习惯了 组件比较多
    RedisMasterNode
        53
    RedisMasterNode  
       2022-04-21 15:13:03 +08:00
    @iwdmb 下次可以试试。不过说什么营销厉害的,感觉不太赞同,讲这些没有意思,工具或者团队是需要有合适的人来运营,这不是比较的理由,你只需要强调出你推荐的工具的优点就足够了
    concernedz
        54
    concernedz  
       2022-04-21 15:34:12 +08:00
    强推 goframe 和 go-zero
    chenhaifeng
        55
    chenhaifeng  
       2022-04-21 15:47:45 +08:00
    目前正式项目微服务使用 go-zero ,单体用 fiber ,简单好用。
    fsdfds
        56
    fsdfds  
       2022-04-21 16:00:03 +08:00
    无脑 goframe
    bzj
        57
    bzj  
       2022-04-21 16:38:30 +08:00
    @airplayxcom 又菜又爱说
    captain2011
        58
    captain2011  
       2022-04-21 16:41:11 +08:00
    老手就 gin 吧,新手 begoo 比较友好店,gin 感觉官方再推
    ksco
        59
    ksco  
       2022-04-21 17:40:30 +08:00
    https://github.com/beego/beego/blob/develop/client/orm/db.go#L1068-L1108

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

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

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

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

    这些项目都是脚手架类型,更大程度上是一种工程模板,称作框架都有点高抬了
    xsen
        67
    xsen  
       2022-04-22 13:11:41 +08:00
    go-zero+1
    airplayxcom
        68
    airplayxcom  
       2022-04-22 21:02:36 +08:00 via iPhone
    @bzj 啊对对对
    helloworld1024
        69
    helloworld1024  
       2022-11-17 09:45:19 +08:00
    @eurry +1. 我也喜欢用 iris ,特别是喜欢 iris 的 mvc 功能。gin 我也用,但是 gin 要写一堆的路由,很是费劲,而且不好维护。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1296 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:14 PVG 01:14 LAX 10:14 JFK 13:14
    Do have faith in what you're doing.
    ubao 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