大家好,我是渔夫子。
今天给大家推荐一个能够快速构建golang应用程序的脚手架工具:nunu。该工具的最大功能就是能够通过一个命令来创建项目。包括目录结构、快速创建mvc层的各个文件等。不用开发者再一一的建立对应文件,极大的提高了研发效率。
nunu这个名字来自于英雄联盟中的游戏角色,一个骑在雪怪肩膀上的小男孩。和努努一样,该项目也是站在巨人的肩膀上,它是由Golang生态中各种非常流行的库整合而成的,它们的组合可以帮助你快速构建一个高效、可靠的应用程序。
nunu是基于以下流行的开源库组建而成的:
Nunu采用了经典的分层架构。同时,为了更好地实现模块化和解耦,采用了依赖注入框架Wire。
您可以通过以下命令安装Nunu:
go install github.com/go-nunu/nunu@latest
“tips: 如果go install成功,却提示找不到nunu命令,这是因为环境变量没有配置,可以把 GOBIN 目录配置到环境变量中即可
您可以使用以下命令创建一个新的Golang项目:
nunu new projectName
该命令实际上是从github的默认地址上拉取的模版。当然也可以使用国内加速的仓库作为模版:
// 使用基础模板
nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-basic.git
// 使用高级模板
nunu new projectName -r https://gitee.com/go-nunu/nunu-layout-advanced.git
此命令将创建一个名为projectName的目录,并在其中生成一个优雅的Golang项目结构。
您可以使用以下命令为项目创建handler、service、repository和model等组件:
nunu create handler user
nunu create service user
nunu create repository user
nunu create model user
或
nunu create all user
这些命令将分别创建一个名为UserHandler、UserService、UserRepository和UserModel的组件,并将它们放置在正确的目录中。
您可以使用以下命令快速启动项目:
nunu run
此命令将启动您的Golang项目,并支持文件更新热重启。
通过nunu创建的项目会自动的生成如下项目结构:
.
├── cmd
│ ├── job
│ │ ├── main.go
│ │ ├── wire.go
│ │ └── wire_gen.go
│ ├── migration
│ │ ├── main.go
│ │ ├── wire.go
│ │ └── wire_gen.go
│ └── server
│ ├── main.go
│ ├── wire.go
│ └── wire_gen.go
├── config
│ ├── local.yml
│ └── prod.yml
├── deploy
├── internal
│ ├── handler
│ │ ├── handler.go
│ │ └── user.go
│ ├── job
│ │ └── job.go
│ ├── middleware
│ ├── migration
│ │ └── migration.go
│ ├── model
│ │ └── user.go
│ ├── repository
│ │ ├── repository.go
│ │ └── user.go
│ ├── server
│ │ └── http.go
│ └── service
│ ├── service.go
│ └── user.go
├── mocks
│ ├── repository
│ │ └── user.go
│ └── service
│ └── user.go
├── pkg
├── scripts
├── storage
├── test
│ └── server
│ ├── handler
│ │ └── user_test.go
│ ├── repository
│ │ └── user_test.go
│ └── service
│ └── user_test.go
├── web
│ └── index.html
├── LICENSE
├── Makefile
├── README.md
├── README_zh.md
├── coverage.html
├── go.mod
└── go.sum
该项目的架构采用了典型的分层架构,主要包括以下几个模块:
此外,还包含了一些其他的文件和目录,如授权文件、构建文件、README等。整体上,该项目的架构清晰,各个模块之间的职责明确,便于理解和维护。
通过nunu工具可以快速的创建一个相对标准的目录结构的项目。而且可以快速的生成各个目录中的分层的文件,大大节省了研发时间,提高了研发效率。