雖然直接使用go-gin等框架也很簡單,但是涉及數(shù)據(jù)庫、jwt認證、配置文件和日志記錄等全套的服務,一個個集成進來也挺費事。關鍵是一個個集成,很難做到結構清晰和分層合理。這里推薦一個好用的腳手架Nunu,太好用啦,可以讓你把精力直接放在業(yè)務上直接開干。
Nunu介紹
Nunu 是一個基于 Golang 的應用腳手架,它的名字來自于英雄聯(lián)盟中的游戲角色,一個騎在雪怪肩膀上的小男孩。和努努一樣,該項目也是站在巨人的肩膀上,它是由 Golang 生態(tài)中各種非常流行的庫整合而成的,它們的組合可以幫助你快速構建一個高效、可靠的應用程序。
項目主頁:https://github.com/go-nunu/nunu
功能特色
Nunu 采用了多種常用且非常流行的庫,包括 Gin、Gorm、Wire、Viper、Zap、Golang-jwt、Go-redis、Testify、Sonyflake、robfig-cron 等等。這些庫涵蓋了http服務、數(shù)據(jù)庫訪問、配置文件、日志記錄、認證鑒權等常用組件。他們的組合可以幫助你快速構建一個高效、可靠的應用程序。
分層架構
Nunu 采用了經(jīng)典的分層架構。同時,為了更好地實現(xiàn)模塊化和解耦,采用了依賴注入框架 Wire。
特性
Nunu 具有以下特性:
- 超低學習成本和定制:Nunu 封裝了 Gopher 最熟悉的一些流行庫。你可以輕松定制應用程序以滿足特定需求。
- 高性能和可擴展性:Nunu 旨在具有高性能和可擴展性。它使用最新的技術和最佳實踐,確保你的應用程序可以處理高流量和大量數(shù)據(jù)。
- 安全可靠:Nunu 使用了穩(wěn)定可靠的第三方庫,確保你的應用程序安全可靠。
- 模塊化和可擴展:Nunu 旨在具有模塊化和可擴展性。你可以通過使用第三方庫或編寫自己的模塊輕松添加新功能和功能。
- 文檔完善和測試完備:Nunu 文檔完善,測試完備。它提供了全面的文檔和示例,幫助你快速入門。它還包括一套測試套件,確保你的應用程序按預期工作。
- 簡潔分層架構:Nunu 采用了經(jīng)典的分層架構。同時,為了更好地實現(xiàn)模塊化和解耦,采用了依賴注入框架 Wire。
文檔
Nunu 提供了全面的文檔和示例,幫助你快速入門。它還包括一套測試套件,確保你的應用程序按預期工作。
nunu/docs/zh/guide.md at main · go-nunu/nunu · GitHub
要求
要使用 Nunu,你需要在系統(tǒng)上安裝以下軟件:
- Golang 1.16 或更高版本
- Git
- MySQL 5.7 或更高版本(可選)
- Redis(可選)
安裝
你可以通過一行命令安裝 Nunu:
go install github.com/go-nunu/nunu@latest
linux下把nunu命令加入環(huán)境變量:
vi ~/.bashrc
bashrc文件末尾增加并保存
export PATH=$PATH:/root/go/bin
讓環(huán)境變量生效:
source ~/.bashrc
簡單使用?
創(chuàng)建新項目
您可以使用以下命令創(chuàng)建一個新的Golang項目:
nunu new projectName
默認拉取github源,你也可以使用國內(nèi)加速倉庫
// 使用基礎模板
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
?
?目錄介紹
.
├── cmd
│?? ├── job
│?? ├── migration
│?? └── server
│?? ├── wire
│?? │?? ├── wire.go
│?? │?? └── wire_gen.go
│?? └── main.go
├── config
│?? ├── local.yml
│?? └── prod.yml
├── deploy
├── internal
│?? ├── dao
│?? │?? ├── dao.go
│?? │?? └── user.go
│?? ├── handler
│?? │?? ├── handler.go
│?? │?? └── user.go
│?? ├── job
│?? │?? └── job.go
│?? ├── middleware
│?? │?? ├── cors.go
│?? │?? ├── jwt.go
│?? │?? ├── log.go
│?? │?? └── sign.go
│?? ├── migration
│?? │?? └── migration.go
│?? ├── model
│?? │?? └── user.go
│?? ├── provider
│?? │?? └── provider.go
│?? ├── server
│?? │?? └── http.go
│?? └── service
│?? ├── service.go
│?? └── user.go
├── pkg
│?? ├── config
│?? ├── helper
│?? ├── http
│?? └── log
├── script
├── storage
├── test
├── web
├── LICENSE
├── README.md
├── README_zh.md
├── go.mod
└── go.sum
?這是一個經(jīng)典的Golang 項目的目錄結構,包含以下目錄:
-
cmd
:存放命令行應用的代碼,例如?main.go
。 -
config
:存放配置文件,例如?config.yaml
。 -
internal
:存放項目內(nèi)部的代碼,不對外暴露。-
dao
:存放數(shù)據(jù)訪問對象(Data Access Object)的代碼。 -
handler
:存放 HTTP 請求處理器的代碼。 -
middleware
:存放 HTTP 中間件的代碼。 -
model
:存放數(shù)據(jù)模型的代碼。 -
provider
:存放依賴注入的代碼。 -
server
:存放 HTTP 服務器以及路由注冊的代碼。 -
service
:存放業(yè)務邏輯的代碼。
-
-
pkg
:存放可重用的代碼,對外暴露。-
config
:存放讀取配置文件的代碼。 -
helper
:存放輔助函數(shù)的代碼。 -
http
:存放 HTTP 相關的代碼。 -
log
:存放日志相關的代碼。
-
創(chuàng)建組件
你可以使用以下命令為項目創(chuàng)建 handler、service 和 dao 等組件:
nunu create handler user
nunu create service user
nunu create dao user
nunu create model user
這些命令將分別創(chuàng)建一個名為?UserHandler
、UserService
、UserDao
?和?UserModel
?的組件,并將它們放置在正確的目錄中。
啟動項目
你可以使用以下命令快速啟動項目:
nunu run
此命令將啟動你的 Golang 項目,并支持文件更新熱重啟。
編譯 wire.go
wire是Go官方推出的一款類似于Spring依賴注入工具。有別于以往的依賴注入工具facebookgo/inject、uber-go/dig等,采用反射實現(xiàn)。wire采用通過代碼描述對象之間的依賴關系,然后自動生成代碼在編譯期實現(xiàn)依賴注入的工具 源碼:https://github.com/google/wire
什么是依賴注入
說到依賴注入(Dependency Injection,縮寫DI),不得不提控制反轉(Inversion of Control,縮寫為IoC)。IoC是一種設計思想,核心作用是降低代碼耦合度。 傳統(tǒng)系統(tǒng)應用是在類內(nèi)部主動引用對象,從而導致類與類之間高度耦合,不利于維護,而有了IoC容器后,把創(chuàng)建和查找對象工作交給容器,由容器動態(tài)的將某個依賴關系注入對象中,控制權由調用者應用代碼轉移到IoC容器,控制權發(fā)生了反轉,從而實現(xiàn)對象間解耦。依賴注入是實現(xiàn)IoC解決依賴問題的設計模式。
你可以使用以下命令快速編譯?wire.go
:
nunu wire
此命令將編譯你的?wire.go
?文件,并生成所需的依賴項。
書籍推薦
首頁關注博主公眾號《貓青年》,回復“書籍”,獲取更多高清電子書資源!完全免費!
GitHub - imarvinle/awesome-cs-books: ?? 經(jīng)典編程書籍大全,涵蓋:計算機系統(tǒng)與網(wǎng)絡、系統(tǒng)架構、算法與數(shù)據(jù)結構、前端開發(fā)、后端開發(fā)、移動開發(fā)、數(shù)據(jù)庫、測試、項目與團隊、程序員職業(yè)修煉、求職面試等
其他資源
?nunu/docs/zh/guide.md at main · go-nunu/nunu · GitHub
?Nunu: 助你快速構建高效可靠的Go應用_出于隨性的博客-CSDN博客
框架 - Nunu: 助你快速構建高效可靠的Go應用 - 個人文章 - SegmentFault 思否
go-nunu: Nunu是一個基于Golang的應用腳手架
搭建go腳手架_go 腳手架_風落不歸處的博客-CSDN博客
Wire:Go最優(yōu)雅的依賴注入工具 - 碼農(nóng)教程文章來源地址http://www.zghlxwxcb.cn/news/detail-580208.html
Go 官方依賴注入工具wire-騰訊云開發(fā)者社區(qū)-騰訊云文章來源:http://www.zghlxwxcb.cn/news/detail-580208.html
Wire:Go最優(yōu)雅的依賴注入工具 - 碼農(nóng)教程
到了這里,關于go-Nunu,一個好用的腳手架推薦,助你快速構建Go應用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!