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

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

  •  
  •   gaigechunfeng · Jun 11, 2020 · 23812 views
    This topic created in 2198 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  
    brucewuio
        101
    brucewuio  
       Jun 11, 2020
    4GB 都不够? 很怀疑
    gimp
        102
    gimp  
       Jun 11, 2020
    @Hanggi “一 go 到底” 🤣

    一 go 我里 go go
    hyperxu
        103
    hyperxu  
       Jun 11, 2020
    问就是 gin
    但是既然你提到了 springboot 一把梭,那可以看看 go 版 spring,https://github.com/go-spring/go-spring
    skyrem
        104
    skyrem  
       Jun 11, 2020
    借楼问一句,B 站貌似也是 go ,用的啥框架?
    maoxs2
        105
    maoxs2  
       Jun 11, 2020 via Android
    不用框架。gayhub 静态页面加官方 net 包直接撸 api 。本身就是图它简单才用的没必要自己加戏。
    SwagXin
        106
    SwagXin  
       Jun 11, 2020
    不用
    di1012
        107
    di1012  
       Jun 11, 2020
    gin beego 二选一
    ditel
        108
    ditel  
       Jun 11, 2020 via Android
    @skyrem 自己写的吧,上次 b 站的代码可以看下
    agdhole
        109
    agdhole  
       Jun 11, 2020   ❤️ 1
    上来就写业务,不用复杂配置,啥都集成了,推荐 asp .net core XD
    allgy
        110
    allgy  
       Jun 11, 2020 via Android
    httproter + sqlx
    allgy
        111
    allgy  
       Jun 11, 2020 via Android
    更正 httprouter + sqlx
    wslzy007
        112
    wslzy007  
       Jun 11, 2020
    wangbenjun5
        113
    wangbenjun5  
       Jun 11, 2020
    我只说一句,千万不要用 beego,自带的 orm 太坑了。。。当然你也可以选择接个 gorm
    lithbitren
        114
    lithbitren  
       Jun 11, 2020
    go 各个框架的性能根本不是重点考察要素,主要还是看框架本身好不好用。
    LittleYangYang
        115
    LittleYangYang  
       Jun 11, 2020
    我比较喜欢用 Echo
    gemini767
        116
    gemini767  
       Jun 11, 2020
    如果不需要私有化部署的话,不如升级 paas 或者 saas
    tt0411
        117
    tt0411  
       Jun 11, 2020
    Go 适合写业务逻辑清晰稳定的中间件, 做 Web 业务开发真的不合适, 特别是因为没有异常机制, 满屏 if err != nil ...
    kzzhr
        118
    kzzhr  
       Jun 11, 2020
    推荐一发 iris,gin 实在是太弱了。用 gin 要么拷一坨代码,要么自己做二次封装。图啥呢
    labulaka521
        119
    labulaka521  
       Jun 12, 2020 via iPhone
    fasthttp 听说也不错性能很好呢
    zzlettle
        120
    zzlettle  
       Jun 12, 2020   ❤️ 5
    go 开发 web 其实效率很低,现在基本没有哪个框架够得上及格线。
    所谓百花齐放,其实就是在说一堆垃圾,一个能打的都没有
    gin 什么的,谁用谁知道,跟没有框架,用 go 直接撸基本没有什么区别
    什么框架太重,我就喜欢这样么重口味的,最好是那种一键就自动生成,就是楼主说的,只用写逻辑不用关心其他的
    越重越好。
    我现在用 django,起码开发的时候基本可以做到只关心逻辑。运行效率根本不在考虑的选项。开发效率才是最重要的
    40huo
        121
    40huo  
       Jun 12, 2020
    @zzlettle #120 同意,小项目写的爽才重要,性能不够到时候重写都行
    Hanggi
        122
    Hanggi  
       Jun 12, 2020
    @zzlettle go 做 web 效率低能说出个 1 2 3 吗?很好奇是怎么开发的。
    跟 go 直接撸没有区别?你当 github 3 万 stars 都是傻子😓。

    不考虑性能是没问题的,但是如果开发效率在差不多的情况下为什么不用强类型,高性能,轻量级,易扩展的 gin 呢?
    zzlettle
        123
    zzlettle  
       Jun 12, 2020   ❤️ 1
    @Hanggi 我是说开发效率。3 万 stars 是不是傻子不知道,django 少说百万的用户量,现在是在比拼人数?自己开发的时候,心里没有个数吗。gin 框架自己都说了,只是把一些基本的东西整合,简化下,你要开发一些 web 基本的模块,还是要自己写。他只是帮你简化,不用一个函数套一个函数。gin 开发最大量的就是 api,说的简单点,基本就是一个数据库的 go 接口超级强化版,让前端来调用数据。开发个传统意义的 web,你试试,各种库用到你要死的心都有.
    zzlettle
        124
    zzlettle  
       Jun 12, 2020   ❤️ 1
    @Hanggi 用 gin 开发有一个不是很大,但是确比较限制的问题,就是 router,也就是 url.因为他用的 router 库的原因,导致了他开发的网站的 url,不是能全部 2 级的地址。本来这个不是大问题,但是现在就有这么一个需要怎么办。比如开发一个需要 seo 的网站,比如商城,现在需要所有的商品和类目都是这样的 地址
    /prod1
    /prod2
    /class1
    /class2
    也就是说,不能用以前常用的那种
    /class1/prod1
    /class2/prod2
    必须部分级别部分产品,不分文章
    全部都是一级的地址
    gin 的 router 模块就实现不了这样的效果
    必须换别的 router
    gin 换 router 基本就是要换 gin
    lithbitren
        125
    lithbitren  
       Jun 12, 2020
    只用过 gin,不考虑 beego,有哪个 diao 大的港港国产 gf 有啥坑吗,用的人少,网上都没啥深度评测
    Hanggi
        126
    Hanggi  
       Jun 12, 2020
    @zzlettle 你说的这个问题确实存在,但这个其实不是 gin 的问题,而是 httprouter 会产生 wildcard conflict 的问题。
    但是并不是说必须要做成你说的那样,你说的那个只是其中一种解决方法,网上搜搜的话能搜到很多解决方案。
    https://hanggi.me/post/golang/wildcard-conflict/

    httprouter 自己也说,他们就是故意这么做的,要的就是一个性能,如果无法接受可以选择其他不使用 httprouter 的框架。


    还有,gin 本身就是一个轻量级、高性能框架。他帮你把 go 语言这类静态语言中很多麻烦的数据绑定、解析、校验的工作都给你做好了,剩下的只要按你的要求添加 gorm, go-jwt, 等库就好了,还要啥。

    如果你一定需要一个 full solution 可能确实要自己费点功夫,但也不是你说的自己手撸个什么出来,都是有可以直接拿来用的方案的。
    orm
        127
    orm  
       Jun 12, 2020
    上来就写业务代码?
    rails(ruby) https://rubyonrails.org
    grails(java) https://grails.org
    orm
        128
    orm  
       Jun 12, 2020
    grails 应该是 groovy
    jss
        129
    jss  
       Jun 12, 2020 via iPhone
    @tt0411 不需要 if 判断,单独封装一个 error 处理,err != nil 直接 panic 让中间件去捕获 panic
    beginor
        130
    beginor  
       Jun 12, 2020 via Android   ❤️ 1
    ASP.NET Core +1
    qloog
        131
    qloog  
       Jun 12, 2020
    @allgy 玩的存原生~ ,点赞
    qloog
        132
    qloog  
       Jun 12, 2020
    @kzzhr 或许是自由吧,有个架子,其他都是自己撸~
    WeaponXu
        133
    WeaponXu  
       Jun 12, 2020
    我也想知道有没有深度的 GoFrame 用户评价一下框架,最近看到越来越多人使用。
    raptor
        134
    raptor  
       Jun 12, 2020
    只用过 gin,还可以。

    另外,python 的 swagger 怎么不行了? flask-swagger 要手撸注释是麻烦一点,但不是还有 flask-restx(原 restplus)嘛,很方便的啊。
    Rebely
        135
    Rebely  
       Jun 12, 2020
    @skyrem b 站应该是使用基于 gin 自己二次开发的 blade 框架
    Yanickkk
        136
    Yanickkk  
       Jun 12, 2020
    leon0903
        137
    leon0903  
       Jun 12, 2020
    @yannxia 官方,社区等的确是不推荐这么做的。 但是我们是这么用的,因为你 web 应用用这个方法可以做到任意层级的返回。 你如果不这么做,就只能吧框架的 context 一层层传递下去,而且还要保证上层在返回后要 return 。 是非常痛苦的。
    cbasil
        138
    cbasil  
       Jun 12, 2020
    推荐 goframe 框架,里面封装的方法开箱即用,非常方便。功能全面,是一款模块化、高性能、生产级的 Go 基础开发框架
    sagaxu
        139
    sagaxu  
       Jun 12, 2020 via Android
    @leon0903 没有异常机制,硬要模拟
    damngood
        140
    damngood  
       Jun 12, 2020
    go 所谓的框架真的没什么所谓, 随便挑一个不太冷门看着顺眼的就好.
    namelosw
        141
    namelosw  
       Jun 12, 2020
    上来就写业务感觉还是没人打得过 Rails
    someonedeng
        142
    someonedeng  
       Jun 12, 2020
    gin 就行了
    pliex
        143
    pliex  
       Jun 12, 2020   ❤️ 1
    尝试一下我的 gin-vue-admin 吧 重点放在前台业务就好了 很香的 : https://github.com/flipped-aurora/gin-vue-admin
    Yanickkk
        144
    Yanickkk  
       Jun 12, 2020
    @leon0903 社区不接受异常,也算是半排斥写业务系统……
    ccav
        145
    ccav  
       Jun 12, 2020
    一直用 gin.
    xyqhkr
        146
    xyqhkr  
       Jun 12, 2020
    go 的外包只推荐 GoFrame
    gaigechunfeng
        147
    gaigechunfeng  
    OP
       Jun 14, 2020
    @zzlettle XD 目前用 djg,听你说效率肯定没问题。 另外这个框架性能,和占用资源如何? spring 就是太耗资源
    gaigechunfeng
        148
    gaigechunfeng  
    OP
       Jun 14, 2020
    @brucewuio 4G 运行一个肯定是没问题。 一个 spring boot 跑起来,都搞到快 1 个 G 内存了。 我们项目慢慢多起来了,担心多了顶不住。
    gaigechunfeng
        149
    gaigechunfeng  
    OP
       Jun 14, 2020
    @pliex 感谢 gin-vue-admin 作者都来回帖。 我看到好几个 xd,包括网上都在说 gin 的 router 是短板。 你肯定有深入的理解,你觉得呢?
    gaigechunfeng
        150
    gaigechunfeng  
    OP
       Jun 14, 2020
    @dhssingle .net core 的各种库资源多吗,有没有类似 mybatis 的数据库插件,或者各种微信小程序库的插件这些。我渐渐的对.net 产生了性趣
    pliex
        151
    pliex  
       Jun 16, 2020
    @gaigechunfeng gin 说实话是什么都没有 所以需要对它进行大量的封装和其他模块的引用 灵活性大对应带来的就是功能少 而功能齐全则带来的缺点就是业务繁多 所以 还是需要自己去权衡做出选择了
    gaigechunfeng
        152
    gaigechunfeng  
    OP
       Jun 18, 2020
    @hjahgdthab750 兄弟能否留个 wx,我加你,请教一些问题。非伸手党。
    Martox
        153
    Martox  
       Jul 10, 2020
    还缺人么。前端想转后端。
    1  2  
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2494 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 189ms · UTC 01:21 · PVG 09:21 · LAX 18:21 · JFK 21:21
    ♥ Do have faith in what you're doing.