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

[Go 语言] 目前最好的 Web 框架和 ORM 库是?

  •  
  •   szzhiyang · Jan 9, 2020 · 25011 views
    This topic created in 2494 days ago, the information mentioned may be changed or developed.
    Supplement 1  ·  Jan 9, 2020

    Gin 和 Echo 哪个更好?


    88 replies  •  2020-04-19 11:54:13 +08:00
    eslizn
    eslizn
    Jan 9, 2020
    1
    gin 除了不支持路由命名以外暂时找不到其他缺点了
    除了 gorm 还有其他*更好*的选择?
    kidlj
    kidlj
    Jan 9, 2020 via iPhone
    2
    更喜欢 Echo, better API.
    gogobody
    gogobody
    Jan 9, 2020 via Android
    3
    歪楼求问,就框架而言 iris 怎么样啊
    Leigg
    Leigg
    Jan 9, 2020 via Android
    4
    哪有最好,我用的 iris,功能全面,速度不输 gin
    Leigg
    Leigg
    Jan 9, 2020 via Android
    5
    然后是 xorm
    lqs
    lqs
    Jan 9, 2020
    6
    借地推销一下我写的 sqlingo
    https://github.com/lqs/sqlingo
    szzhiyang
    szzhiyang
    OP
    Jan 9, 2020
    7
    @Leigg XORM 貌似不支持 Associations 啊。
    richzhu
    richzhu
    Jan 9, 2020
    8
    用 gin 的飘过~ 暂时没有#1 说的那些需求,所以没感觉到明显的缺点
    同也是用的 gorm
    waising
    waising
    Jan 9, 2020
    9
    gin + sqlx
    szzhiyang
    szzhiyang
    OP
    Jan 9, 2020❤️1
    10
    @Leigg Iris 的模型绑定功能不如 gin 的方便。
    polythene
    polythene
    Jan 9, 2020❤️3
    11
    试试 facebooke 开源的 ORM 框架 ent: https://github.com/facebookincubator/ent
    szzhiyang
    szzhiyang
    OP
    Jan 9, 2020
    12
    @polythene 感谢,之前一直不知道这个。
    fuxiaohei
    fuxiaohei
    Jan 9, 2020
    13
    gin + dbr
    Trim21
    Trim21
    Jan 9, 2020❤️1
    15
    gorm 不支持批量插入,好难受。。。
    pubby
    pubby
    Jan 9, 2020 via Android
    16
    gin,路由用 gorilla/mux
    gorm
    itskingname
    itskingname
    Jan 9, 2020 via iPhone
    17
    @gogobody Iris 弄跨域太麻烦了
    jss
    jss
    Jan 9, 2020 via iPhone
    18
    @Trim21 批量插入有解决方案的
    Achilless
    Achilless
    Jan 9, 2020
    19
    你们都用 gin 写什么呀
    jss
    jss
    Jan 9, 2020 via iPhone
    20
    @pubby 老哥,gin 有没有可分享的项目源码 参考一下
    pubby
    pubby
    Jan 9, 2020 via Android
    21
    @jss 没有,都是公司项目
    heww
    heww
    Jan 9, 2020 via iPhone
    22
    @eslizn 有个印尼人写的 rel 库看着还不错!
    heww
    heww
    Jan 9, 2020 via iPhone
    23
    yiplee
    yiplee
    Jan 9, 2020
    24
    go-chi/chi + jmoiron/sqlx
    ArJun
    ArJun
    Jan 9, 2020
    25
    主流都是 gin + gorm
    eslizn
    eslizn
    Jan 9, 2020
    26
    补充一个,如果不考虑性能,我会选择 martini
    gowk
    gowk
    Jan 9, 2020❤️1
    28
    不喜欢 ORM,轻量级的 sqlx 足矣。
    或者 sqlx 的轻量级封装: https://github.com/ilibs/gosql
    目前感觉良好
    gowk
    gowk
    Jan 9, 2020
    29
    @heww 呵呵,一看你就经常逛 reddit:/r/golang
    dodo2012
    dodo2012
    Jan 9, 2020
    30
    开始用的 gin,后来自己参考了一堆,自己搭了一个,主要是自己扩展起来方便,orm 就用了 gorm
    ylsc633
    ylsc633
    Jan 9, 2020
    31
    @Achilless
    @jss

    gin 写的博客! 也就是简单的 curd!
    gin 封装的包,供上面的博客所用!

    博客地址: https://www.iphpt.com/
    代码是开源!

    orm 用的 xorm!

    我个人用过 xorm 和 gorm 还有 beego 自带的 orm
    coolzilj
    coolzilj
    Jan 9, 2020
    32
    orm,相比 gorm 这类 code-first 的方案,更喜欢 sqlboiler 这种 database-first code-generation 方案
    inframe
    inframe
    Jan 10, 2020
    33
    gorm 还行,虽然有时候有奇奇怪怪的预定义值
    Kisesy
    Kisesy
    Jan 10, 2020
    34
    gin 有路由冲突还有上下文是个结构,不能扩充更多功能,echo 就没这些问题,不过开发不太活跃
    hehe12dyo
    hehe12dyo
    Jan 10, 2020
    35
    gin,
    lyu0317
    lyu0317
    Jan 10, 2020 via iPhone
    36
    gin+gorm
    QingXuJiaZhi
    QingXuJiaZhi
    Jan 10, 2020
    37
    这个 https://upper.io/db.v3/ 非常好用!
    Akkuman
    Akkuman
    Jan 10, 2020 via Android
    38
    写很复杂条件的 sql,我还是喜欢类 mybatis 这种,目前找到的就 xormplus
    missdeer
    missdeer
    Jan 10, 2020
    39
    gin+gorm 吧
    Muninn
    Muninn
    Jan 10, 2020
    40
    https://tech.crandom.com/post/2017/echo-error/

    这是我早年从 gin 转到 echo 的原因,就因为 echo 多了个这。
    不知道现在 gin 的错误处理有没有更灵活。

    gorm 现在比以前也好很多了。前几天试了一下,slice of struct 类型的列表数据,preload 时它会自动用 in 关键字,只会出来俩 sql,早年的时候有 n 行就有 n+1 个 sql,导致很好的 preload 功能在返回列表时没发用。现在很方便的。 就是写 join 还是不那么方便。
    p23XnFNH1Wq953rV
    p23XnFNH1Wq953rV
    Jan 10, 2020
    41
    gin+gorm
    AlphaTr
    AlphaTr
    Jan 10, 2020 via iPhone
    42
    echo+gorm
    johng
    johng
    Jan 10, 2020❤️2
    43
    正所谓框架肯定要是框架不能是库,当然推荐`GoFrame` https://goframe.org/

    `GF(Go Frame)`是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设,包括常用的核心开发组件, 如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、 定时任务、数据库 ORM、TCP/UDP 组件、进程管理 /通信、并发安全容器等等。 并提供了 Web 服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等, 支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite 等特性。

    `GF`实现了非常强大的`ORM` https://goframe.org/database/gdb/index
    sunmoon1983
    sunmoon1983
    Jan 10, 2020
    44
    目前正在用 goframe
    jackmrzhou
    jackmrzhou
    Jan 10, 2020 via iPhone
    45
    看到没人推荐 beego 我就放心了。主流还是 gin+gorm。但是 gin 不像一个真正的 web 框架,小项目用起来挺爽,大项目用起来就感觉缺点什么,作者本身在 issue 里也回应那些要更多更上层 feature 的人说这只是一个微框架而已。gorm 也一样,半年前用的时候对批量操作的支持真的稀烂。所以如果是初入 go 建议这两个都先用用,同时看看一些其他的 framework,然后就会意识到 go 的生态就这样。
    zhuzhiqiang
    zhuzhiqiang
    Jan 10, 2020
    46
    labulaka521
    labulaka521
    Jan 10, 2020 via Android
    47
    gin+手写 sql
    liion
    liion
    Jan 10, 2020
    48
    Kratos 有用过的吗?
    ncwtf
    ncwtf
    Jan 10, 2020
    49
    @jackmrzhou 45# beego 咋了。。只写了一个 golang 项目,用的 beego,感觉还行啊。
    byx
    byx
    Jan 10, 2020 via iPhone
    50
    gin + sqlx
    richzhu
    richzhu
    Jan 10, 2020
    51
    @polythene 哇塞! 感谢 学一下去!
    zzzmode
    zzzmode
    Jan 10, 2020
    52
    gin+gorm
    fengyj
    fengyj
    Jan 10, 2020 via Android
    53
    web 框架: gin, echo
    orm: xorm, grom
    个人常用 gin xorm
    fanpei0121
    fanpei0121
    Jan 10, 2020
    54
    @Trim21 https://github.com/t-tiger/gorm-bulk-insert 可以用这个库配合 gorm 批量插入哦
    pandanrain123
    pandanrain123
    Jan 10, 2020
    55
    gin + sqlx
    shoaly
    shoaly
    Jan 10, 2020
    57
    @ncwtf 语言 or 框架之争 这么多年不都是这样地么.... 就跟武侠里面的门派一样, 都说天下第一
    MarksGui
    MarksGui
    Jan 10, 2020
    58
    @Trim21 自己构建一个语句不就得了
    2kCS5c0b0ITXE5k2
    2kCS5c0b0ITXE5k2
    Jan 10, 2020
    59
    gin + gorm
    jackmrzhou
    jackmrzhou
    Jan 10, 2020 via iPhone
    60
    @ncwtf 估计要么你还在用老一套的方式管理 golang 的依赖,要么你就没有使用那个注解路由的特性。beego 注解路由在 go mod 是没办法用的,我有修提 pull request,但是很久都没有回复(我猜测是 issue 区国人灌水严重,而且没有稳定的维护团队)。beego 应该已经不怎么活跃了,上次 commit 还是 11 月,所以不怎么推荐了。
    fanpei0121
    fanpei0121
    Jan 10, 2020
    61
    @jackmrzhou 真的停止维护了吗, 看来要转 gin 了
    janxin
    janxin
    Jan 10, 2020
    62
    @jackmrzhou 应该没有,哪一个 PR 我给他们开发说一下
    nigulasida
    nigulasida
    Jan 10, 2020
    64
    @sunmoon1983
    @johng

    确实好用
    songsong
    songsong
    Jan 10, 2020
    65
    gin gorm, xorm 只从不在 github 更新后我就放弃了
    xmge
    xmge
    Jan 10, 2020
    66
    beego 其实也挺方便的
    dodo2012
    dodo2012
    Jan 10, 2020
    67
    @ncwtf 开始学 go 用一下可以,后面就算了,gin 或者自己用原生都可以,最早我也用过,后来有次有个 bug,提了一直没人回,修没修不清楚了,上次看了下,这个 issue 现在也是没人回,都过了几年了。
    killerv
    killerv
    Jan 10, 2020
    68
    @richzhu 我感觉路由命名是很常用的啊,你的应用没有要输出或者跳转内部链接的地方吗?比如没有登录就跳转到 /login
    OMGZui
    OMGZui
    Jan 10, 2020
    69
    gin + gorm
    fanzheng
    fanzheng
    Jan 10, 2020
    70
    去 golang 的官方看看把 https://go.dev/solutions/webdev/
    fanpei0121
    fanpei0121
    Jan 10, 2020
    71
    讲道理 gin 不能称为框架吧
    Hanggi
    Hanggi
    Jan 10, 2020
    72
    @fanpei0121 那是什么?
    fanpei0121
    fanpei0121
    Jan 10, 2020
    73
    @Hanggi 库
    CHYK
    CHYK
    Jan 10, 2020
    74
    个人习惯 gin,ORM/ODM 的话要看是否有多数据库兼容需求。
    chennqqi
    chennqqi
    Jan 10, 2020
    75
    gin + xorm
    chennqqi
    chennqqi
    Jan 10, 2020
    76
    @ncwtf beego 太重了,又重又罗嗦 beego 可能类似于 ThinkPHP 那种
    wweir
    wweir
    Jan 10, 2020 via Android
    77
    Go 变成新时代的 PHP 了吗,天天争这些有的没的
    gxm44
    gxm44
    Jan 10, 2020
    78
    RESTful - echo

    ORM - gorm or xorm
    gxm44
    gxm44
    Jan 10, 2020
    79
    echo + 1
    lj3lj3
    lj3lj3
    Jan 10, 2020
    80
    echo 文档稍好
    gorm 比较起来稍好一点
    91HhN6wSkyi3T3r3
    91HhN6wSkyi3T3r3
    Jan 10, 2020
    81
    reddit 上几乎只要一提到 iris,立马就会有一场腥风血雨

    吃瓜链接[A warning about github.com/kataras/iris]( https://www.reddit.com/r/golang/comments/b481q7/a_warning_about_githubcomkatarasiris/)

    有人整理的前因后果[ Why you should not use iris for your Go projects ]( http://www.florinpatan.ro/2016/10/why-you-should-not-use-iris-for-your-go.html)
    glogger
    glogger
    Jan 11, 2020
    82
    iris + gorm
    William911
    William911
    Jan 11, 2020
    83
    题外话, 各位有好用的类似 swagger 的 go api 文档生成轮子推荐的吗?
    KickAssTonight
    KickAssTonight
    Jan 11, 2020
    84
    感觉 gorm 和 xorm 都不能算是真正的 ORM
    kiddingU
    kiddingU
    Jan 14, 2020
    85
    @fanpei0121 beego bee 工具都不支持 mod,去年就有人提了,但是就是没改动,感觉确实都没啥人维护了
    fizzday
    fizzday
    Mar 9, 2020
    86
    go orm 当然选择 gorose 了, 谁用谁知道
    wzw
    wzw
    Apr 19, 2020
    87
    @kidlj #2 是不是说 Echo 比 gin 更好些 restful api?
    kidlj
    kidlj
    Apr 19, 2020 via iPhone
    88
    @wzw 不是,是说框架的接口设计得更好,比如集中式的错误处理,用 next 函数显式控制下个中间件的执行,validator 客制化等。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   681 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 128ms · UTC 21:28 · PVG 05:28 · LAX 13:28 · JFK 16:28
    ♥ Do have faith in what you're doing.