• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gaigechunfeng
V2EX  ›  程序员

怒发一贴: go web 框架选哪个

  •  
  •   gaigechunfeng · Jun 11, 2020 · 24894 views
    This topic created in 2338 days ago, the information mentioned may be changed or developed.

    并非伸手党,不为别的,纯粹引战~~

    目前我们的项目都是 springboot 一把梭,无奈太吃资源,4G 内存的服务器,跑不了几个项目。 当然主要是为了折腾,有心想尝试一下 go lang 的 web 框架玩一玩。

    随便搜了一下,发现 go 的框架太多了,大而全的,小而美的,国产的,进口的,太多了。这么好的选型素材不来 V 站水一贴,简直暴殄天物。

    我们的需求:中小型项目(做外包,接私活),要求上手快,出活块,然后该有的权限管理,jwt 都要有。尽量轻型吧,少占资源。

    好了,恳请大家推荐一下,我会用心比较。谢谢

    Supplement 1  ·  Jun 11, 2020
    PS:
    我们的主要项目都是小程序,希望大家推荐的 go web 框架,有常熟的微信 token,code 认证的东西,或者很方面集成。
    Supplement 2  ·  Jun 11, 2020
    还要求尽量少的去搭建环境,写架构设计的代码。

    因为面向钱编程,就只写业务 code 就行,上来就能写业务的那种。
    153 replies  •  2020-07-10 15:56:11 +08:00
    1  2  
    ❮ ❯
    NCZkevin
    NCZkevin
    Jun 11, 2020❤️1
    1
    还是推荐 gin 吧,生态挺好的,很快就能上手
    pinktu
    pinktu
    Jun 11, 2020
    2
    gin-vue-admin
    u823tg
    u823tg
    Jun 11, 2020❤️2
    3
    gin 吧,java 的不适合中小项目。 或者你们可以换 dotnet core
    haoji
    haoji
    Jun 11, 2020
    4
    gin
    raincode
    raincode
    Jun 11, 2020
    5
    还招人不?
    huanleyan
    huanleyan
    Jun 11, 2020
    6
    iris
    liaokylin2v
    liaokylin2v
    Jun 11, 2020 via Android
    7
    beego 吧,gin 是优秀但是需要有人做很好的扩展,如果能力不强很容易用坏的
    Mohanson
    Mohanson
    Jun 11, 2020 via Android❤️1
    8
    net/http 标准库
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    9
    1-4 楼都推荐 gin,我几乎要确定要 gin 了。
    哈哈~
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    10
    @raincode 我们也是兼职搞得。 几个公司同事一起。 目前还行,项目能应付的过来。 后面搞不赢,会考虑也找人帮忙做。
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    11
    @pinktu 到位!老铁怎么知道我是 vue 的技术栈啊。 是不是有开源的库,我弄到本地,硬学一下。 :D
    qW7bo2FbzbC0
    qW7bo2FbzbC0
    Jun 11, 2020❤️2
    12
    @u823tg @ gaigechunfeng 一开始我也找 go 的 web 框架,后来转向 dotnetcore,然后自己鼓捣了验证和 consul 注册两个小轮子,学习了 NPoco,总的来说,最起码 swagger 文档方面 spring 和 netcore mvc 吊打 python 和 go web 。而且 netcore 可以编译成单文件,和 go 一样到处部署,有一点就是对没有 root 权限的 cent6 部署不太友好,因为要额外的依赖包

    另外我觉得 web 不是 go 的最佳赛道
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    13
    @u823tg gin 的发展稳定不? 学期曲线如何。
    Vegetable
    Vegetable
    Jun 11, 2020❤️1
    14
    go 的框架多吗?能打的就两个,gin/beego,前者对标 flask,后者对标 Django/Spring Boot
    比起 Java 早已被统一的情形是多一些,实际上真的很好选。

    Beego 的好处是和 Java 体系的模型更像一点,可以看一看
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    15
    @hjahgdthab750 这有点超纲。其实我们团队用过 spring 和 flask 的。 flask 之前是学习用的,项目只是跑起来,还没商用。后来的项目都是 spring 了。 但就是资源消耗太多,而且看到网上经常 go 和 java 对比,所以才考虑尝试一下 go 。
    janxin
    janxin
    Jun 11, 2020❤️3
    16
    Go 都比较轻量,轻量到简陋。国内外包出活可以考虑 GoFrame,把常用的都塞进去了,臃肿是真的胖,反正外包嘛,维护不是什么重点,出活需要快
    wysnylc
    wysnylc
    Jun 11, 2020
    17
    spring boot 4g 完全够用何况你们还不是多大的项目,建议多查查怎么优化
    pwli
    pwli
    Jun 11, 2020
    18
    @hjahgdthab750 fastapi 不服
    fiypig
    fiypig
    Jun 11, 2020
    19
    如果是外包的话,那我只推荐 beego 了 , 你们可以根据框架 ,整个框出来 ,中间件什么的, 到时候套一下就行 .
    但是我不喜欢 beego 就是 ,我还是习惯用 gin...
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    20
    @Vegetable 兄弟这么一说我理解了。gin 就是小,轻,自由度高,beego 就是大而全。 我们从 sb 转过来,可能 beegon 上手会快点。 另外多问一句,服务跑起来,beego 的资源消耗会不会比 gin 大很多。

    现在倾向于 beego 了,哈哈
    loading
    loading
    Jun 11, 2020 via Android❤️2
    21
    gin
    goframe
    二选一,一个轻,一个重。goframe 是国人产品。
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    22
    @wysnylc 4G 是跑一个项目是够,跑多个估计有点顶不住。 甲方都要我们做成 saas 的架构了,就是为了节省资源。性能优化,调优目前不是我们的主要目标,也没有时间沉下来去仔细研究这些。惭愧,见笑了,兄弟
    dodo2012
    dodo2012
    Jun 11, 2020❤️1
    23
    gin,go 的不要选重框架,
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    24
    @loading gin 轻型大家都已经公认了。 楼上有兄弟说 beego 。
    不知道 beego 和 goframe 的区别。

    这么看驻留的 go 框架就好几个了。
    fengyj
    fengyj
    Jun 11, 2020
    25
    gin, iris, echo...
    推荐这 3 个
    qW7bo2FbzbC0
    qW7bo2FbzbC0
    Jun 11, 2020
    26
    @pwli 这个我也调研过,部署略麻烦。我追求的是不需要 super user,不需要额外管护,直接启动的方式。与其使用 fastapi,我反而会回退到 bottle.py 上,毕竟小项目接口没太多,直接手写 swagger 就行
    qW7bo2FbzbC0
    qW7bo2FbzbC0
    Jun 11, 2020
    27
    @gaigechunfeng flask 还行吧,插件加多了就成了 django 了,但是会比 django 看起来还不规范。。。
    dog82
    dog82
    Jun 11, 2020
    28
    gin beego 二选一,抛硬币决定吧
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    29
    @dog82 哈哈,玄学决定了。 这两个项目对微信后台认证,支付那一套应该都有成熟的支持吧。我们主要做 wx 小程序。
    u823tg
    u823tg
    Jun 11, 2020
    30
    @hjahgdthab750 #12 用 docker 吧,dotnet core 对 docker 支持的挺好
    ahsjs
    ahsjs
    Jun 11, 2020
    31
    gin
    konakona
    konakona
    Jun 11, 2020
    32
    其实 Go 的 Web 框架是真的 Web 框架,类似 Orm 这些还是会用其他包来解决。比如 Go 用的 Gorm 也是一朵「传奇」,问题还挺多的。

    Web 框架主要是解决了路由、方法封装、表单处理的一些指向性的标准,仍然需要具备一定的 Golang 语言能力,比如类型处理等等,还是 Golang 的老本行。

    上手速度来看,Beego 绝对是最快的,等于换了个语言,还是沿用原来的开发思路。

    Gin 的话,稍微理解下也是不错的。

    我目前用的 Gin 。
    Hanggi
    Hanggi
    Jun 11, 2020
    33
    Go 只有两个框架 Gin 和 Echo 。别的可以忽略。
    metrue
    metrue
    Jun 11, 2020 via iPhone
    34
    Gin 即可.
    stach
    stach
    Jun 11, 2020❤️10
    35
    go 不适合做 web
    agee
    agee
    Jun 11, 2020 via iPhone
    36
    去看一眼 beego 的项目吧你就放弃的,还是 gin,echo
    konakona
    konakona
    Jun 11, 2020❤️1
    37
    @gaigechunfeng 这种微信开发的需求,在 Go 领域里,完全不需要考虑“程序用什么 Web 框架”,因为都是第三方的包…… 都能用呀。

    比如 beengo 里可以用 gin 的一些包。而 gin 也会用 beengo 里的一些包。就是这么随意。
    konakona
    konakona
    Jun 11, 2020
    38
    @stach 适合啊,你理解的 web 不会是混编吧?
    pinktu
    pinktu
    Jun 11, 2020
    39
    @gaigechunfeng 你去 GitHub 搜索就有了,很好的一个框架
    windfarer
    windfarer
    Jun 11, 2020
    40
    go 不适合做外包
    to2false
    to2false
    Jun 11, 2020
    41
    这需求描述,没必要用 go 啊,我觉得 php 就很合适,短平快
    pinktu
    pinktu
    Jun 11, 2020❤️1
    42
    @gaigechunfeng 你需要的应该是一个半成品项目二次开发,他们推荐都是框架
    JB18CM
    JB18CM
    Jun 11, 2020
    43
    go 不适合开发
    leedong00
    leedong00
    Jun 11, 2020
    44
    php 符合你
    tlday
    tlday
    Jun 11, 2020
    45
    以前我也喜欢小而美的框架,后面发现一大堆必须的插件都已经很少更新或者不更新导致跟最新的框架主版本不兼容也没有好的替代品,整个项目的插件兼容性和版本一团浆糊,经常需要改插件源码以后,我就倒向大而全了。点名 flask 和 webpack 。
    monospace
    monospace
    Jun 11, 2020❤️5
    46
    朋友,PHP 考虑下不。。。
    tlday
    tlday
    Jun 11, 2020
    47
    还有 sinatra
    labulaka521
    labulaka521
    Jun 11, 2020 via iPhone
    48
    beefo 基本不维护了
    Hellert
    Hellert
    Jun 11, 2020
    49
    以前用 echo, 现在直接用 net/http 标准库
    xsephiroth
    xsephiroth
    Jun 11, 2020 via iPhone
    50
    Echo

    以前用 gin 的路由太不爽了
    ccog
    ccog
    Jun 11, 2020
    51
    php 考虑下
    qloog
    qloog
    Jun 11, 2020
    52
    首推 gin,其次 echo, 用 gin 主要是很多公司在用,大厂小厂都有用,碰到问题好解决,但是用 gin 也需要自己撸很多东西,想快速上手可以看看这个,可以直接拿来开发了,[snake]( https://github.com/1024casts/snake)
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    53
    @monospace 兄弟,我对 php 有误解。 我还是到别的摊位看看 {笑哭}
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    54
    @pinktu 嗯嗯,对的。最好有开源的项目,mall,或者 admin 这种。 适合二开的,直接拿过来硬撸的。
    lixuda
    lixuda
    Jun 11, 2020
    55
    @gaigechunfeng flask 不行吗?
    sunxiansong
    sunxiansong
    Jun 11, 2020
    56
    echo 和 gin 中选了 echo

    - 代码似乎更紧凑一点,看上去比较简单,比较好上手研究
    - echo 的统一错误处理机制更方便
    - echo 的 release 节奏比 gin 更频繁一点

    -gin 的中间件更丰富一点,不过要加其他依赖,echo 自带了一些中间件
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    57
    @lixuda 之前我们用 jquery 的时候,用的 flask,也没有感觉什么不行。但后面基于一个 spring boot 的开源项目做的二开,就转到 sb 了。 sb 确实比 flask 省事很多。 反正我们主要是看二开的项目{笑哭}
    mengyx
    mengyx
    Jun 11, 2020 via Android
    58
    我一开始用 gin,后来换了 echo,用的舒服。
    确实,go 的话好像没有大框架的习惯,要什么功能引入相应的包就好了。
    natforum
    natforum
    Jun 11, 2020
    59
    gin, iris 二选一
    cz5424
    cz5424
    Jun 11, 2020 via iPhone
    60
    Go 不适合做 web 是什么梗,看团队成员技能点选语言最重要,web 框架都是轮子。flask 做小程序,没啥不好的。你说得那些附带的都不是 web 框架提供的,都是第三方包。
    joesonw
    joesonw
    Jun 11, 2020
    61
    没人推 macaron 吗? 一般的业务对于框架性能来说其实是不挑剔的. macaron 注入的易用性还是很棒的.
    sagaxu
    sagaxu
    Jun 11, 2020 via Android❤️3
    62
    Java 换 Go 省不了多少内存,原来能跑 1 个的换 Go 能跑 2 个,多付出的人工成本,能买很多内存
    Hanggi
    Hanggi
    Jun 11, 2020
    63
    选框架看 stars 说话,国内项目根据情况打折扣。比如:
    beego 的星星数:stars/3 就好了,
    Vue 的星星数:stars/5 就比较合理了。
    yincrow
    yincrow
    Jun 11, 2020❤️1
    64
    等你一个月后来发贴,标题为你想好了:用 Go 做业务开发太痛苦了,不要用 go 写 web
    prenwang
    prenwang
    Jun 11, 2020❤️1
    65
    go 有没有类似 mybatis 的模块
    yahon
    yahon
    Jun 11, 2020
    66
    django + DRF 不是外包首选吗
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    67
    @prenwang 对,这个我也想问。目前用的就是 mybatis
    johng
    johng
    Jun 11, 2020
    68
    @gaigechunfeng 如果称得上框架的话,推荐 GoFrame: https://goframe.org ,可以将她类似于 PHP 中的 Laravel,Java 中的 SpringBoot 或者 Python 中的 Django 。GoFrame 框架虽然开源时间较晚,不过发展比较快,口碑不错。
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    69
    @sagaxu 兄弟你要这么说,那我就不困了啊。其实 spring 真的已经是出活很快的了。 要是升不了这么多内存,我发帖意义何在。。。
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    70
    @yincrow 哈哈,不过很有可能我会发帖:go 选型没通过,还是继续 spring boot 撸了
    wzw
    wzw
    Jun 11, 2020
    71
    我在用 GoFrame, 挺好,非常好。
    JasperYanky
    JasperYanky
    Jun 11, 2020❤️1
    72
    外包 django 一梭子,感觉学一次能写 10 年
    chinvo
    chinvo
    Jun 11, 2020 via iPhone❤️1
    73
    如果之后不打算用 go 了建议看看 .net core,比 Java 高到不知道哪里去了
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    74
    @JasperYanky 老铁不早说,我们团队,误入了 spring boot 的坑。Django 运行起来,吃资源吗?
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    75
    @chinvo 真的吗?兄弟说这么诚恳,我现在就去了解一下。 容易上手吗
    Adriel
    Adriel
    Jun 11, 2020❤️1
    76
    上手快,出活块? php 不香吗?
    mosesyou
    mosesyou
    Jun 11, 2020
    77
    java 转 go 的可以选 beego,我们之前用过,然后加上 go-kit 的 consul 服务注册发现之类的功能就差不多了
    OMGZui
    OMGZui
    Jun 11, 2020
    78
    (做外包,接私活) php 多香啊
    JasperYanky
    JasperYanky
    Jun 11, 2020
    79
    @gaigechunfeng 公司目前在用 go java 和 python django ,如果只是纯外包或者小项目,django 应该是最适合的
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    80
    @chinvo 朋友介意留个 wx 吗?我加你交流一下这个.net 啊
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    81
    @hjahgdthab750 朋友介意留个 wx 吗? 交流一下,搞不好我要学习.net core 了 :D
    chinvo
    chinvo
    Jun 11, 2020 via iPhone❤️1
    82
    @gaigechunfeng #74

    同样的 MVC hello world, .net 占资源比 Java 少太多。

    至于执行效率、响应速度等问题,很多公开的 benchmark 都有做对比。

    LinQ 和 官方 ORM 框架 EF 用起来很爽,能覆盖大部分业务逻辑对数据操作的需求。

    生态方面也不差,nuget 上的活跃包很多,前些年还需要偶尔造轮子,这两年基本上各种需求都能找到可用的包了。
    gaigechunfeng
    gaigechunfeng
    OP
    Jun 11, 2020
    83
    @airplayxcom 我顶,难道比 spring 还快?
    Gja5kx2zjf92LLin
    Gja5kx2zjf92LLin
    Jun 11, 2020
    84
    我学的 iris,GO 做 MVC 还是太费劲了
    missdeer
    missdeer
    Jun 11, 2020
    85
    轻一点的 gin,重一点的 beego
    问题是前不久我看到一个评测说 gin 的性能还不如 beego,有点反直觉
    chinvo
    chinvo
    Jun 11, 2020❤️1
    86
    @gaigechunfeng #82 PHP 确实出活快

    生态也不错, 各种国内平台解决方案、SDK

    二开和维护弄到怀疑人生
    Adriel
    Adriel
    Jun 11, 2020
    87
    @gaigechunfeng 复制粘贴一把梭 你说快不快
    dhssingle
    dhssingle
    Jun 11, 2020❤️1
    88
    Asp.Net Core + ABP VNext 开发效率杠杠的。
    性能也比 Go 、Java 那几个常用框架强很多。
    https://www.techempower.com/benchmarks/#section=data-r19&hw=ph&test=composite
    ![techempower]( https://i.loli.net/2020/06/10/jZU8PBNTRLw31x7.png)
    freemoon
    freemoon
    Jun 11, 2020
    89
    iris 、gin √
    beego ×
    freemoon
    freemoon
    Jun 11, 2020
    90
    说下我个人选择一个 web 框架重点参考的几个因素:
    - issues opened
    - features
    - documents
    - start-cases
    - stars
    基于以上因素,个人认为 gin 稍弱于 iris 。
    zorui
    zorui
    Jun 11, 2020
    91
    何不 继续 Java vert.x Quarkus 资源都比较少。
    fengerzh
    fengerzh
    Jun 11, 2020
    92
    iris 简单到连路由都不用写,直接 PostSomeroute 就可以用 /someroute 访问了
    keepfun
    keepfun
    Jun 11, 2020
    93
    gin-vue-admin 应该比较适合你 但是这个偏 admin
    my3157
    my3157
    Jun 11, 2020
    94
    自己用 martini 魔改的框架, 很多业务相关的都用中间件实现了, 复用率很高, 如果不是特别 care 性能, martini 或者基于 martini 魔改的 macaron 都可以
    auin
    auin
    Jun 11, 2020
    95
    如果单纯的因为内存问题,我也建议不要换 Springboot 一把梭下去,付出的时间成本和人员成本 可以买一堆内存条了
    my3157
    my3157
    Jun 11, 2020
    96
    比如修改用户邮箱的代码是这样的

    ```
    m.Patch("/user/email", user.CheckEmail, user.CheckToken, user.EmailNotExist, user.Detail, user.UpdateEmail)
    ```
    gxm44
    gxm44
    Jun 11, 2020
    97
    echo + 1
    qiubaowei
    qiubaowei
    Jun 11, 2020
    98
    node 行吗
    ningyu1
    ningyu1
    Jun 11, 2020
    99
    强烈推荐 gin,自由度好、社区完善
    Hanggi
    Hanggi
    Jun 11, 2020 via iPhone
    100
    感觉 go 语言是一个遇强则强,遇弱则弱的语言。
    强的可以一 go 到底,弱的就连业余都写不了。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1354 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 137ms · UTC 18:49 · PVG 02:49 · LAX 10:49 · JFK 13:49
    ♥ Do have faith in what you're doing.