Gin 是 Go 世界中最快的框架之一。然而,Gin 中缺少一項功能,那就是 hot realod。因此,在這篇部落格中,我可以向您展示如何在 Gin 專案中啟用熱重載功能。
假設這是你的 main.go fie
package main import ( "fmt" "net/http" "github.com/gin-gonic/gin" ) func successResponse(data interface{}) gin.H { return gin.H{ "status": "success", "data": data, } } func successResponseWithMessageAndCode(data interface{}, message string, code int,c *gin.Context) { c.JSON(code, gin.H{ "status": "success", "data": data, "message": message, }) } func main() { r := gin.Default() fmt.Println("Hello World") r.GET("/", func(c *gin.Context) { data:= map[string]interface{}{ "message": "Hello World", } successResponseWithMessageAndCode(data, "Success", http.StatusOK, c) }) r.GET("/hello", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "Hello World", }) }) r.Run("localhost:8080") }
所以我們可以使用 Air (https://github.com/air-verse/air) - 為您的 Go 應用程式即時重新載入
使用此指令安裝Air?
go install github.com/air-verse/air@latest
然後使用此命令新增 .air.toml 檔案
air init
如果找不到air指令,可能是因為Go bin目錄不在你的PATH
在這種情況下,我使用的是 Fish Terminal
首先,讓我們找出 Go 安裝二進位檔案的位置。執行此命令:
echo $GOPATH/bin
如果沒有設定$GOPATH,預設位置通常是~/go/bin。
現在,讓我們將此目錄加入到 Fish 中的 PATH 中。開啟您的 Fish 設定檔:
nano ~/.config/fish/config.fish
將以下行加入文件:
set -gx PATH $PATH $GOPATH/bin
如果未設定$GOPATH,則使用完整路徑,例如:
set -gx PATH $PATH ~/go/bin
儲存檔案並退出編輯器。
重新載入您的 Fish 配置:
~/.config/fish/config.fish
現在再次嘗試運行空氣:
air
如果您使用的是 bash 終端,則必須編輯 .~/bashrc 檔案。
現在編輯.air.toml檔案
root = "." tmp_dir = "tmp" [build] cmd = "go build -o ./tmp/main ." bin = "tmp/main" full_bin = "APP_ENV=dev APP_USER=air ./tmp/main" include_ext = ["go", "tpl", "tmpl", "html"] exclude_dir = ["assets", "tmp", "vendor"] include_dir = [] exclude_file = [] log = "air.log" delay = 1000 # ms stop_on_error = true send_interrupt = false kill_delay = 500 # ms [log] time = false [color] main = "magenta" watcher = "cyan" build = "yellow" runner = "green" [misc] clean_on_exit = true
確保您的 Gin 應用程式在本機上偵聽,而不僅僅是 :8080 以獲得更好的熱重載行為
r.Run("localhost:8080")
現在不用運行 go run main.go ,只需運行 air 即可看到神奇的效果。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3