如果你是一个刚入门go语言的新人,或者是刚从其他语言转到go语言的软件工程师,那么你一定不能错过这个脚手架项目——Nunu。
项目地址:nunu
Nunu是一个基于Golang的应用脚手架工具,可以帮助开发者快速搭建一套go项目的应用程序模板。nunu生成的项目模板集成了go项目常用的框架和组件,如gin、gorm、go-redis、wire、viper、swagger等等。
当然了,项目模板可以有很多,不一定非得拘泥于nunu提供的这一套,但在这里我想重点介绍一下nunu命令本身以及使用nunu命令生成的项目布局的亮点。
首先是nunu命令,我最开始接触nunu的时候,源码还只有500多行,现在则有2000多行代码。但请不要畏惧看源码和复现nunu源码。nunu源码中最核心最亮眼的地方,就在于对cobra库的使用。cobra库是Golang里一个用于创建强大的现代CLI应用程序的第三方库,许多很知名的开源项目使用到了cobra,比如docker,k8s。大家如果接触过go微服务,应该对go-zero和kratos框架不陌生。这两个框架的命令生成工具goctl和kratos,也都是基于cobra开发的。如果可以掌握cobra,将来也可以开发属于自己的命令行工具。特别是对于没有什么go项目经验,却需要找到go开发岗的掘友。参加面试时,别人的简历项目都是各种秒杀商城及其变体(真正的秒杀商城绝对不是一个人可以搞定的),而你的项目是一个脚手架工具,是不是显得别具一格。
其次是wire工具。nunu生成的项目架构,和微服务框架kratos一样,使用了wire实现了模块化和解耦。wire是 Google 开源的一个依赖注入工具,它是一个代码生成器,并不是一个框架。我们只需要在一个特殊的wire.go文件中告诉wire类型之间的依赖关系,它会自动帮我们生成代码,帮助我们创建指定类型的对象,并组装它的依赖,实现Java工程师们耳熟能详的控制反转。当然,这不是必须的,许多大型go项目不使用这种方式,依然可以很好地组织项目布局和结构。但直到今天,业界也没有一个统一的go项目布局的标准,所以尽可能多了解一些go项目组织布局的方式,还是很有必要的。
希望这个项目可以对各位想要使用go语言练手写项目的掘友有所帮助,掘友们以后在跟着网上的视频教程敲项目时,如果不想使用教程里的组织布局,就可以使用nunu框架提供的模板。而如果习惯了nunu提供的项目布局模板,掘友们将来也更容易适应kratos框架提供的项目布局。
我是gopher_looklook,现在某独角兽企业担任后端开发工程师,专注于go语言领域的程序逻辑/架构设计/项目实践等。
如果这篇文章对你有帮助,欢迎点赞收藏+关注,后续我会分享更多后端开发领域的优质内容,你的支持是我创作的最大动力,期待与你一起成长!