The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
wenbinwu

Go 的 Web 框架哪家强

  •  
  •   wenbinwu · Mar 2, 2017 · 7634 views
    This topic created in 3534 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
    notes
    Mar 2, 2017 via Android
    1
    试试 beego 支持下国产
    loading
    loading
    Mar 2, 2017 via Android
    2
    目前在用 echo ,要很多轮子。

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

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

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

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

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

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

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

    中间件: 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
    fundon
    Mar 3, 2017
    47
    echo
    Unknwon
    Unknwon
    Mar 3, 2017
    48
    @kappa dep 目前与官方无关

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


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

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

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

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

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

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

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

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

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