标题: [求推荐] 寻找开箱即用的 Go Web 模板(需 GORM + DI + 垂直切片架构),顺便探讨一下 Go 社区对 DI 的态度
大家好,
最近在做 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 语言没有任务基础,也是最近刚尝试使用。上面的讨论如有不当之处,请多多包涵。