Go语言项目推荐4
给大家推荐一个好玩的go项目:Nunu。项目地址:https://github.com/go-nunu/nunu
Nunu是一个基于Golang的应用脚手架工具,可以帮助开发者快速搭建一套go项目的应用程序模板。nunu生成的项目模板集成了go项目常用的框架和组件,如gin,gorm,go-redis,wire,viper,swag等等。
当然了,项目模板可以有很多,不一定非得拘泥于nunu提供的这一套,但在这里我想重点介绍一下nunu命令本身以及使用nunu命令生成的项目布局的亮点。
首先是nunu命令,我最开始接触nunu的时候,源码还只有500多行,现在差不多有1000行左右,但大家不要畏惧看源码和复现nunu源码。nunu源码中最核心最亮眼的地方,就在于对cobra库的使用。cobra库是Golang里一个用于创建强大的现代CLI应用程序的第三方库,许多很知名的开源项目使用到了cobra,比如docker,k8s。大家如果接触过go微服务,应该对go-zero和kratos框架不陌生。这两个框架的命令生成工具goctl和kratos,也都是基于cobra开发的。大家如果可以掌握cobra,将来也可以开发属于自己的命令行工具,而在面试时,别人的简历项目都是各种秒杀商城及其变体(真正的秒杀商城绝对不是一个人可以搞定的),而你的项目是一个命令行工具,是不是显得别具一格。
其次是wire工具。nunu生成的项目架构,和微服务框架kratos一样,使用了wire实现了模块化和解耦。wire是 Google 开源的一个依赖注入工具,它是一个代码生成器,并不是一个框架。我们只需要在一个特殊的go文件中告诉wire类型之间的依赖关系,它会自动帮我们生成代码,帮助我们创建指定类型的对象,并组装它的依赖,实现Javaer耳熟能详的控制反转。当然,这不是必须的,许多大型go项目不使用这种方式,依然可以很好地组织项目布局和结构。但直到今天,业界也没有一个统一的go项目布局的标准,所以尽可能多了解一些go项目组织布局的方式,还是很有必要的。等大家以后进到企业参与实际开发,你们企业大概率也会有自己的项目结构布局。
希望这个项目可以对大家有所帮助,大家以后在学习go项目开发时,如果不想使用视频教程里的组织布局,就可以使用nunu框架提供的模板,如果习惯了nunu提供的项目布局模板,大家将来也更容易适应kratos框架提供的项目布局。