go 有哪个 web 框架是靠谱的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
loading
0.06D
V2EX    Go 编程语言

go 有哪个 web 框架是靠谱的?

  •  
  •   loading 2016-08-14 07:41:59 +08:00 5321 次点击
    这是一个创建于 3349 天前的主题,其中的信息可能已经有所发展或是发生改变。
    martini - 慢,被 gin 替代。
    gin - 作者两个学生,现在似乎都是社区修 bug 。
    echo - 不成熟?
    iris - 这个地球最快的框架,似乎是一个人?作者前几天又开新坑 q ,使用 net/http 。
    revel - 似乎没活力了?

    beego - 算是最靠谱的吧,还是国产的,不会被道德绑架。。。

    其他我没太了解,难道 golang 都自己用 net/http 了?
    第 1 条附言    2016-08-14 09:07:20 +08:00
    有一篇说明使用框架需要的代价,文中用 Javascript 举例。
    https://aerotwist.com/blog/the-cost-of-frameworks/
    52 条回复    2016-08-22 14:22:19 +08:00
    Tom008
        1
    Tom008  
       2016-08-14 08:03:58 +08:00 via Android   1
    Echo 或者 gin 都是可以在线上应用的
    janxin
        2
    janxin  
       2016-08-14 08:15:29 +08:00 via iPhone   1
    gin 和 echo 现在基本没什么 bug 了,不成熟是说周边中间件嘛?
    iris 主要是用 fasthttp ,所以新的用 net/http 也没啥问题吧。
    框架代码都比较简单,你自己维护也可以。现在 context 进标准库之后其实用 net/http 基本就可以了,只不过还需要一个路由处理的东西。
    beego 现在应该是有社区维护了,如果我没记错, iris 和 echo 都应该是学生维护的…
    Trim21
        3
    Trim21  
       2016-08-14 08:51:13 +08:00 via Android
    求解,国产非国产和道德绑架有什么关系?
    saggit
        4
    saggit  
       2016-08-14 09:00:32 +08:00
    发现 iris 的作者长的像 疑犯追踪 里的主角。
    loading
        5
    loading  
    OP
       2016-08-14 09:02:20 +08:00 via Android
    @Trim21 也就随便说说。

    大概看了 beego 文档,是像传说中的一样详细。

    因为已经有使用 python flask 的经验,所以我不打算用 beego 。如果为了找工作,学 beego 我是觉得最合适的。

    我目前是业务玩的状态,所以想用个靠谱稳定的,毕竟是偶尔用一下,不想过个几个月 api 全变了或者项目没人维护了…
    hxtheone
        6
    hxtheone  
       2016-08-14 09:18:04 +08:00
    @saggit 这头像用的就是 finch 吧
    yanyuan2046
        7
    yanyuan2046  
       2016-08-14 09:39:42 +08:00
    beego 一生黑
    loading
        8
    loading  
    OP
       2016-08-14 09:40:29 +08:00 via Android
    @yanyuan2046 讲讲你的故事?
    yanyuan2046
        9
    yanyuan2046  
       2016-08-14 09:50:02 +08:00   1
    @loading 看看 beego 的源码就知道了,我不大喜欢堆砌代码型的框架,功能确实都有,但在上面写业务觉得恶心
    loading
        10
    loading  
    OP
       2016-08-14 09:55:19 +08:00
    @yanyuan2046 已经挖掘到了这个帖子:
    http://www.v2ex.com/t/89374#;

    我能看出来的是 beego 对外的接口比较符合一般开发者的口味,内在实现有点。。。
    leofml
        11
    leofml  
       2016-08-14 09:55:50 +08:00   1
    可以试试 http://ivpusic.github.io/neo/
    对于 API Gateway 也够用了
    zoues
        12
    zoues  
       2016-08-14 09:55:53 +08:00 via iPhone   1
    建议 go 开发不要用 web 框架 没意义 个人浅见 beego 这类套 django 实在没必要吧
    genesislive
        13
    genesislive  
       2016-08-14 10:13:29 +08:00   1
    iris/echo
    raincious
        14
    raincious  
       2016-08-14 10:22:19 +08:00
    @zoues

    但是这样到最后又会回到之前 PHP 的怪圈。其实说来原因也很简单:没有一个处于统治地位的强大框架。
    lixiaohan
        15
    lixiaohan  
       2016-08-14 10:29:02 +08:00
    iris echo 都还不错吧,很实用
    lianghudou
        16
    lianghudou  
       2016-08-14 10:29:13 +08:00
    go 根本就不该用来开发 web ,记得以前在模板里实现两层 for 循环都是难题,不知道现在解决了没有
    raincious
        17
    raincious  
       2016-08-14 10:38:58 +08:00   2
    @loading

    刚看了那个帖子,我觉得:

    1 、把代码质量等同于代码风格和规范完全就是不正确的;
    2 、同理,把代码优雅程度等同于设计的优雅程度也完全是不正确的;
    3 、 Beego 确实有各种问题,但是主要是在接口版本不稳定上,而不是代码写的是不是好看。
    loading
        18
    loading  
    OP
       2016-08-14 10:43:10 +08:00 via Android
    @raincious 嗯,我也发现了很多人提到接口问题,一升级就编译不过去…这个确实坑了点。
    asdfasdfa
        19
    asdfasdfa  
       2016-08-14 10:45:08 +08:00   1
    beego 以前用过,后来发现有问题提问根本没人理,就没再碰过了。感觉用自带的就 ok 了
    reus
        20
    reus  
       2016-08-14 10:49:14 +08:00   1
    如果是前端渲染的架构,那就没有用 MVC 框架的必要,用 net/http 套一层类似 rpc 那样的、映射请求到方法的机制即可。例如 https://github.com/reusee/ja 。简单粗暴,框架都算不上,但用起来顺手。
    hooluupog
        21
    hooluupog  
       2016-08-14 11:41:17 +08:00
    Go 没有那种大而全的很成熟的 MVC 框架。目前用的最多的是大猩猩,质量有保障,但不是 rails 这种的。
    net/http 再找个好点的路由,基本够用了。如果觉得性能 还不够,试试 fasthttp 。
    imn1
        22
    imn1  
       2016-08-14 11:54:41 +08:00
    @loading
    题外问一下,最近发帖频繁,是不是发帖时间恢复正常了?
    mengzhuo
        23
    mengzhuo  
       2016-08-14 11:57:48 +08:00 via iPhone
    @lianghudou 三层都没问题啊
    loading
        24
    loading  
    OP
       2016-08-14 12:01:20 +08:00
    @imn1 这个帖子,我一发出,就在第一条,以前都是我自己置顶的
    ipconfiger
        25
    ipconfiger  
       2016-08-14 12:04:14 +08:00
    不用框架一样的代价巨大, 你不得不重新写一堆轮子或者写一大堆胶水代码来粘合一堆轮子
    tinyproxy
        26
    tinyproxy  
       2016-08-14 12:12:48 +08:00 via iPhone
    beego 一生黑
    imn1
        27
    imn1  
       2016-08-14 12:42:16 +08:00
    @loading
    我的也变正常了,最近 v2 的 cdn 又调过一次,所以我还是认为不是降权,是一些未知的服务器时间问题
    ykrl089
        28
    ykrl089  
       2016-08-14 13:48:03 +08:00
    beego 就是没事接口变来变去的。
    例如某个 issue 说里面一个接口的名称多了个 s ,然后下个版本变量名就改了。
    不带这么玩的啊!!!!
    scys
        29
    scys  
       2016-08-14 13:49:25 +08:00
    在用 GIN ,就算用内置的 net/http 其实开发速度基本一样,只是利用了一些辅助函数,而没有太过依赖框架,比如 json 的 dump 一类的方便
    JohnSmith
        30
    JohnSmith  
       2016-08-14 14:01:02 +08:00
    @yanyuan2046 go 这个语言个人感觉不太适合写业务,做中间件还可以
    strwei
        31
    strwei  
       2016-08-14 15:27:57 +08:00
    revel
    hmli
        32
    hmli  
       2016-08-14 17:44:01 +08:00
    用过 iris, 开发纯 API 还不错, web 还是略蛋疼. Go 对模板渲染的处理很麻烦, github 上也没找到比较好的库.

    就我个人而言, 开发同样的 web 后端, 使用 tornado 的效率是使用 iris 的数倍.
    janxin
        33
    janxin  
       2016-08-14 18:06:49 +08:00 via iPhone
    @hmli pongo2 试一下?
    orvice
        34
    orvice  
       2016-08-14 18:25:41 +08:00   1
    比较推荐 gin ,然后需要什么自己在封装。
    crazyxin1988
        35
    crazyxin1988  
       2016-08-14 18:29:24 +08:00
    为啥非要用 go 开发 web
    开发 web 用 python ruby php 不更好吗
    boro
        36
    boro  
       2016-08-14 18:51:15 +08:00 via iPhone   1
    好像是七牛,不是整站都到了 Go ?好期待到 Go 在 Web 上有大新。
    timothyye
        37
    timothyye  
       2016-08-14 19:35:15 +08:00 via Android   1
    echo iris 目前比较推荐的两个
    之前用 revel ,最近勉强更新了一下,感觉写一般的功能还是够了
    Akagi201
        38
    Akagi201  
       2016-08-14 21:07:04 +08:00   1
    https://github.com/gohttp/app 在用这个, TJ 出品, 非常轻量级。
    sox
        39
    sox  
       2016-08-14 21:20:45 +08:00   1
    the cost of framework LOL

    任何代码在增长之后都会变成某种程度的 framework
    pathbox
        40
    pathbox  
       2016-08-14 21:45:44 +08:00   1
    如果能前后分离 专注后端, go 还是极好的
    janxin
        41
    janxin  
       2016-08-14 21:46:48 +08:00
    @Akagi201 这是另外两个库的 wrapper 吧....
    Akagi201
        42
    Akagi201  
       2016-08-14 22:48:36 +08:00   1
    @janxin 对的, 非常轻量级, 都是就一个文件. 我比较喜欢, 虽然不活跃了, 不过完全可以自己 hold 住, 把所有代码自己掌握了, 就当自己的一个框架.
    c4pt0r
        43
    c4pt0r  
       2016-08-15 01:27:35 +08:00   1
    为什么都没人提 gorilla......
    akzudd
        44
    akzudd  
       2016-08-15 09:30:03 +08:00   1
    gin 的路由太弱了,现在让我选我选 echo 。
    penjianfeng
        45
    penjianfeng  
       2016-08-15 10:00:36 +08:00   1
    写 web,golang 的模板渲染是个非常及其很麻烦很扯淡的事情,建议前后端分离,golang 用来写 restful api 供前端使用,效果很赞,单纯又 golang 渲染页面复杂很扯淡的...
    penjianfeng
        46
    penjianfeng  
       2016-08-15 10:02:51 +08:00
    恩,我也推荐用 echo,1.0 的时候有些功能可能需要自己造个轮子,现在 2.0 的时候很赞了,建议使用,beego 么,,,虽说是谢大写的,还是不推荐,不要问我为什么,看下代码就知道了
    windyboy
        47
    windyboy  
       2016-08-15 11:54:07 +08:00   1
    如果写 api 的话,我也没有用什么特定的框架
    就是用 goadesign 生成一套代码
    http 部分应该是原生的
    jsfaint
        48
    jsfaint  
       2016-08-15 12:56:00 +08:00   1
    gogs 用的是 macaron ,也是 @Unknwon 开发的
    wujunze
        49
    wujunze  
       2016-08-15 13:07:02 +08:00
    Web 开发 php 是性价比最高的语言 没有之一
    gejigeji
        50
    gejigeji  
       2016-08-15 14:13:56 +08:00
    golang 写底层 api , web 用 python 之类的
    Unknwon
        51
    Unknwon  
       2016-08-15 18:11:25 +08:00   1
    @jsfaint 其实自己搞个框架的本意就是有需求和 BUG 自己分分钟解决了。。不用提交 issue 也不用发 PR 等作者起床吃好饭才来 review 。。。(哈哈 0.0 )
    hmli
        52
    hmli  
       2016-08-22 14:22:19 +08:00
    @janxin
    可能是因为我只在动态语言里用过模板引擎, 写 Go 的时候做的不是 web, 对 Go 里的模板都不太习惯的原因吧, 看着没一个顺眼的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1219 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 23:36 PVG 07:36 LAX 16:36 JFK 19:36
    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