Go 的 Web 框架哪家强 - V2EX
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
wenbinwu

Go 的 Web 框架哪家强

  •  
  •   wenbinwu Mar 2, 2017 7114 views
    This topic created in 3359 days ago, the information mentioned may be changed or developed.

    Go 有不少 web 框架,很多都不是很完善,现在哪个发展的比较好?

    Supplement 1    Mar 2, 2017
    群众们反应 iris 作者不尊重 contributor , awesome-go 拒绝添加 iris 链接
    https://github.com/avelino/awesome-go/pull/1137

    Gin 和 Echo 是好的选择
    Gin
    https://github.com/gin-gonic/gin

    Echo
    https://github.com/labstack/echo
    84 replies    2017-03-07 13:49:33 +08:00
    notes
        1
    notes  
       Mar 2, 2017 via Android
    试试 beego 支持下国产
    loading
        2
    loading  
       Mar 2, 2017 via Android
    目前在用 echo ,要很多轮子。

    beego 失去了 golang 的特点,但是开箱就能用。
    scnace
        3
    scnace  
       Mar 2, 2017 via Android
    主要看你 web 框架的用途吧(话说既然发在了 go 节点 那么不是应该在 go 节点里找一找呢?之前有很多菊苣讨论过
    timothyye
        4
    timothyye  
       Mar 2, 2017 via Android
    revel , beego , iris , echo , gin
    shidenggui
        5
    shidenggui  
       Mar 2, 2017
    用过 gin 开发过不少项目,挺不错的
    plqws
        6
    plqws  
       Mar 2, 2017
    千万不要用 iris 。。。血泪教训。。。
    0915240
        7
    0915240  
       Mar 2, 2017
    gin 还不错。
    janxin
        8
    janxin  
       Mar 2, 2017
    用的 echo
    realpg
        9
    realpg  
    PRO
       Mar 2, 2017
    beego: 让你找回 php 的感觉……
    Muninn
        10
    Muninn  
       Mar 2, 2017 via Android
    echo
    kuaner
        11
    kuaner  
       Mar 2, 2017 via iPhone
    千万不要用 iris
    mocos
        12
    mocos  
       Mar 2, 2017 via Android
    macaron
    neoz
        13
    neoz  
       Mar 2, 2017
    公司在用 gin
    abujj
        14
    abujj  
       Mar 2, 2017 via Android
    @plqws iris 怎么了?为啥?
    abujj
        15
    abujj  
       Mar 2, 2017 via Android
    @kuaner iris 怎么了?为啥?
    abujj
        16
    abujj  
       Mar 2, 2017 via Android
    准备上 iris 。。。突然看到不推荐 我的内心啊。。。
    88250
        17
    88250  
       Mar 2, 2017
    不用框架 :D
    tkisme
        18
    tkisme  
       Mar 2, 2017
    fasthttp
    kappa
        19
    kappa  
       Mar 2, 2017
    @abujj 作者偷代码。。

    一个月前问肯定推荐 gin ,现在的话不会了。。
    fuxiaohei
        20
    fuxiaohei  
       Mar 2, 2017
    @kappa 你遇到 gin 什么问题了?
    kappa
        21
    kappa  
       Mar 2, 2017
    @fuxiaohei

    https://github.com/gin-gonic/gin/issues/794 这么久了没有人管,现在 javierprovecho 也没怎么花心思在项目上,感觉要坑。。
    fuxiaohei
        22
    fuxiaohei  
       Mar 2, 2017
    @kappa 看着最近几小时有回复了。。估计用 gopkg.in 和 canonical import paths 来吧
    kappa
        23
    kappa  
       Mar 2, 2017
    @fuxiaohei 哪有 maintainer 回复? gopkg 等官方 dep 正式发布以后恐怕就和 godeps 一样慢慢退出舞台了,现在切过去意义有多大,而且还搞个半吊子就不动了。。
    fuxiaohei
        24
    fuxiaohei  
       Mar 2, 2017
    @kappa 最后那个人是 member 啊,我看讨论的和 dep 没关系,是他们自己 import path 混乱。 canonical import paths 就是解决这个问题的
    abujj
        25
    abujj  
       Mar 2, 2017 via Android
    。那现在推荐用哪个?
    zysidea
        26
    zysidea  
       Mar 2, 2017 via Android
    @notes 不要用 beego
    fuxiaohei
        27
    fuxiaohei  
       Mar 2, 2017
    @abujj gin 或者 echo
    kappa
        28
    kappa  
       Mar 2, 2017
    @fuxiaohei canonical import paths 对于一般的项目意义不大,这个问题就是他们自己管杀不管埋瞎搞出来的,以前用 gopkg 最大的意义也是版本控制而不是解决依赖路径,现在这个节骨眼上再投靠过去真不合适。
    kappa
        29
    kappa  
       Mar 2, 2017
    @abujj 不描述需求就伸手的都是耍流氓
    Reficul
        30
    Reficul  
       Mar 2, 2017 via Android
    @realpg 你这么说,突然想起谢大本来是写 PHP 的……
    fuxiaohei
        31
    fuxiaohei  
       Mar 2, 2017
    @kappa 不是投靠过去,他的 readme 也是 gopkg.in 的 import 了,只是用 canonical import paths 可以强制 import 路径。 github.com 的 import 就编译不过去。一刀切一下把事情处理掉好了
    kappa
        32
    kappa  
       Mar 2, 2017
    @fuxiaohei 现在的问题是 contrib 好些都没跟着改,本来就编译不过。。
    kappa
        33
    kappa  
       Mar 2, 2017
    @fuxiaohei 现状下切换到 gopkg.in 没什么意义,而且 gopkg 服务最近几个月一直不稳定
    realpg
        34
    realpg  
    PRO
       Mar 2, 2017
    @Reficul #30
    我才知道,为什么会有这种感觉
    感谢解惑
    buseni
        35
    buseni  
       Mar 2, 2017 via Android
    beego 就类似于 thinkphp ,一天就可以撸代码了
    csyangchen
        36
    csyangchen  
       Mar 2, 2017
    gin 不错, 功能基本都有, 但不会太 framework 限制你的使用.
    relaxgo
        37
    relaxgo  
       Mar 2, 2017 via iPhone
    从 echo 转到 chi , echo api 也不稳定
    aljun
        38
    aljun  
       Mar 2, 2017
    说 iris 的。。。你们真的看过 iris 源码么。。。。
    其实我个人之前用框架。。。看了源码之后发现。。。
    一个 http parser 就能解决很多需求。。
    aljun
        39
    aljun  
       Mar 2, 2017
    @aljun 手急了。。。应该是 http router 。。。别的自己撸就好

    [https://github.com/julienschmidt/httprouter]( https://github.com/julienschmidt/httprouter)
    nicevar
        40
    nicevar  
       Mar 2, 2017
    前阵子也不知道该选哪个框架,大致了解了几个然后选择了 gin ,挺好用的,花了一周时间把 ssh 的项目移植过来了
    leedstyh
        41
    leedstyh  
       Mar 3, 2017
    echo ,这个框架本来就有够好, go1.8 之后, go 的 web 服务可以裸跑了,不需要 nginx (之前看过一篇文章介绍的),而 echo 也提供了很多必要的功能。
    Comdex
        42
    Comdex  
       Mar 3, 2017
    macaron
    zonghua
        43
    zonghua  
       Mar 3, 2017 via iPhone
    @realpg 是 ThinPHP 的感觉
    heimeil
        44
    heimeil  
       Mar 3, 2017 via Android
    Gorilla web toolkit
    jarlyyn
        45
    jarlyyn  
       Mar 3, 2017
    自己写的路过。

    go 本身的组建已经很强了。

    搞个中间件粘一下,搞个路由,搞下缓存。

    基本齐活可以玩了。
    jarlyyn
        46
    jarlyyn  
       Mar 3, 2017
    我用过的几个组件推荐下

    中间件: https://github.com/urfave/negroni

    类 express 这个可用。但源代码部分有点不喜欢,重头写了

    路由:https://github.com/julienschmidt/httprouter

    这个还不错。调整一下也可以实现子路由的功能


    内存缓存:https://github.com/coocood/freecache
    可以做本地缓存用

    序列化反序列化 :https://github.com/vmihailenco/msgpack
    效率可能不是最高的。但是和原声的 json 包一样, interface 直接丢进去就可以了,省心。比 gob 效率高很多。

    mysql/sqlite 的驱动。外加标准库的 template 等一些库。

    普通的网站能搞的很不错了。
    fundon
        47
    fundon  
       Mar 3, 2017
    echo
    Unknwon
        48
    Unknwon  
       Mar 3, 2017
    @kappa dep 目前与官方无关

    gopkg.in 目前非 vendor 机制下的版本处理兼容性最好
    WildCat
        49
    WildCat  
       Mar 3, 2017
    @jarlyyn ORM 哪家强?
    wenbinwu
        50
    wenbinwu  
    OP
       Mar 3, 2017
    @WildCat 刚发现 https://github.com/jinzhu/gorm ,感觉挺好
    WildCat
        51
    WildCat  
       Mar 3, 2017
    @wenbinwu 只有这个火了 =。=


    @Unknwon 这个是 golang 社区的大神!你好!
    ETiV
        52
    ETiV  
       Mar 3, 2017 via iPhone
    gorm 文档写的不认真……特别是大小写,这个看着看着就能在脑内自动纠正了

    还一问题就是,复合主键的情况下,调 AutoMigration 创建表。会报自增键只能有一个的错,导致表无法创建成功。
    timothyye
        53
    timothyye  
       Mar 3, 2017 via Android
    @leedstyh 裸跑是神马意思,可以自己绑定域名了?
    TangMonk
        54
    TangMonk  
       Mar 3, 2017 via Android   1
    用 rust 的 rocket 呗
    twm
        55
    twm  
       Mar 3, 2017
    千万不要用 go 开发 web 应用
    Felldeadbird
        56
    Felldeadbird  
       Mar 3, 2017
    @twm 为什么啊?不是说 go 在并发处理方面有得天独厚的能力吗?
    torbrowserbridge
        57
    torbrowserbridge  
       Mar 3, 2017
    janxin
        58
    janxin  
       Mar 3, 2017 via iPhone
    @Felldeadbird 没有脚本语言灵活
    Akagi201
        59
    Akagi201  
       Mar 3, 2017
    自己撸框架吧. 帖下我的
    https://github.com/Akagi201/light
    基于 标准的 http middleware 管理包 alice 跟 性能最强的 httprouter. 兼容 context 包.
    自己撸框架的好处是, 可以自由添加底层代码, 缺什么就加什么. 而且时间紧时可以不用写测试代码, 提交到官方 repo, 通常要写测试代码, 磨合很久才能合并.
    8355
        60
    8355  
       Mar 3, 2017
    我只会 beego 所以没什么可推的 无脑推 beego
    brucefeng
        61
    brucefeng  
       Mar 3, 2017
    一直没搞明白, go 在做 web 的时候强点在哪里?
    RealLiuSha
        62
    RealLiuSha  
       Mar 3, 2017
    写过一个认证服务, 用的 echo 。。。 没我 python 好用
    liguoqinjim
        63
    liguoqinjim  
       Mar 3, 2017
    faygo
    qianguozheng
        64
    qianguozheng  
       Mar 3, 2017
    @brucefeng 说我的感觉,跟写普通程序很类似。 我本来也没有做过 web 开发,但是发现还是挺容易的
    Immortal
        65
    Immortal  
       Mar 3, 2017
    现在在用 gin 吧
    推荐 echo 和 gin
    go 写 web 建议还是做 api 为主 前后分离的做
    像传统 php 或者其他那样耦合的 go 也不算特别合适 官方模板库挺不好用
    orderc
        66
    orderc  
       Mar 3, 2017
    macaron
    janxin
        67
    janxin  
       Mar 3, 2017   1
    @brucefeng 跟脚本比不复杂多少但是提供更高的性能,更容易写出高吞吐 API 。不过和页面紧耦合就是痛苦了,所有的静态语言通病吧。
    zeroten
        68
    zeroten  
       Mar 3, 2017
    @janxin 为啥要和页面耦合?前后端分离呗
    nicevar
        69
    nicevar  
       Mar 3, 2017   1
    @brucefeng 接触 go 没多久,之前 web 都是用 java 做的,初步感觉 go 简洁易用,我那个笨重 ssh 项目后台管理用 java+ExtJs , api 部分现在改用 go 了,开发速度快多了,个人不太喜欢 python 的框架,依赖有时候很乱,发布也不太方便
    jarlyyn
        70
    jarlyyn  
       Mar 3, 2017   1
    @brucefeng

    凭心而论, go 写 web 不算特别强,但也不算很差。

    主要是 web 大部分的时间都和数据库 /网络传素打交道。

    go 的缺点主要是轮子少。文档太简略,动不动要爬源代码。

    优点是部署简单,静态语言。
    janxin
        71
    janxin  
       Mar 3, 2017   1
    @zeroten 看需求决定。我们其实现在基本都是 SPA ,但是也不是所有人都需要 SPA
    simo
        73
    simo  
       Mar 3, 2017
    参考 github star 。了解下每个框架的优缺点,找到适合自己业务的。
    目前个人大部分小项目自己撸。
    稍大些的用 gin 和 beego 。
    pacoyang
        74
    pacoyang  
       Mar 3, 2017
    gin!
    zzWinD
        75
    zzWinD  
       Mar 3, 2017
    strwei
        76
    strwei  
       Mar 3, 2017
    逼购
    orvice
        77
    orvice  
       Mar 3, 2017
    gin
    该有的都有,不该有的也没有 :)
    orvice
        78
    orvice  
       Mar 3, 2017
    @brucefeng 纯 api 项目 golang 开发很爽的。

    去渲染 html 就蛋疼
    leedstyh
        79
    leedstyh  
       Mar 3, 2017   1
    @timothyye 就是不需要 nginx 反代, go 的 web 程序直接跑在生产环境。

    https://news.ycombinator.com/item?id=13213902

    当然,绑定域名这种事,肯定可以,这个是 echo 的做法 ( https://echo.labstack.com/cookbook/subdomains),其实其他的框架也可以
    pathbox
        80
    pathbox  
       Mar 3, 2017
    net/http 然后加需要的扩展就够了。 如果真要追求性能, httprouter 和 fasthttp 似乎不错,不过在生产环境还没尝试过
    timothyye
        81
    timothyye  
       Mar 3, 2017
    go 的模板渲染感觉不是强项,所以比较好的方案是前后端分离, go 只负责提供后端 API 接口,这绝对是强项,哈哈
    reus
        82
    reus  
       Mar 4, 2017
    @timothyye 绑定域名就是检查一下 request 的 Host 字段,不用任何框架都可以
    myself659410
        84
    myself659410  
       Mar 7, 2017
    正在试看框架
    About     Help     Advertise     Blog     API     FAQ     Solana     1088 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 795ms UTC 22:57 PVG 06:57 LAX 15:57 JFK 18:57
    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