大家好,

最近在做 Go 的 Web 项目选型,看了一圈生态里的框架,希望能找到一款偏向开箱即用的模板。想请大家推荐一下:

我理想中的框架特性:

  • 开箱即用:不想从零开始拼凑路由、日志、配置和 ORM 等基础组件,希望能有一套成熟的默认约定。

  • 深度集成依赖注入( DI ):希望框架能很好地管理对象的生命周期和依赖关系。

  • 集成 GORM:因为业务原因,需要 GORM 作为核心的数据库 ORM 工具。

  • 支持垂直切片架构( Vertical Slice Architecture ):这点极其重要!我不希望代码是按“技术职责”横向分层的(比如所有 controller 在一个包,所有 model 在一个包)。我希望框架的推荐实践是按“业务模块”来组织代码的。例如一个用户的业务,其结构应类似于:

/user
  ├── user.model.go
  ├── user.repository.go
  ├── user.service.go
  └── user.controller.go

不知道大家有没有符合上述要求的脚手架或框架推荐?

另外,还有一个疑惑想和大家交流讨论:

在研究 Go Web 框架和各种开源模板的过程中,我发现一个现象:在 Go 语言生态中,大家似乎对“依赖注入( DI )”并不是特别热衷?

在 Java (Spring) 或 C# (.NET) 里,DI 几乎是刻在骨子里的标配,不使用 IoC 容器简直没法写代码。

想听听老哥们的看法,为什么 Go 的社区风气对 DI 容器显得比较克制?

是因为 Go 强调的“大道至简( Keep it simple )”和显式编程哲学?

是手动传递依赖在 Go 里写起来并没有那么繁琐?

还是说使用反射( Reflection )做运行期 DI 在 Go 中有什么性能隐患或难以调试的坑?

期待大家的框架推荐以及对 DI 问题的看法,提前感谢!

前提,本人对 go 语言没有任务基础,也是最近刚尝试使用。上面的讨论如有不当之处,请多多包涵。

标签: none

添加新评论