V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
loading
V2EX  ›  Go 编程语言

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

  •  
  •   loading ·
    ycf · 2016-08-14 07:41:59 +08:00 · 4857 次点击
    这是一个创建于 3017 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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......
    cxflag203
        44
    cxflag203  
       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   ·   实用小工具   ·   2180 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 01:26 · PVG 09:26 · LAX 17:26 · JFK 20:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.