Golang中VSCode实现文件修改后自动重启服务器的方法
Golang中VSCode实现文件修改后自动重启服务器的方法
如果之前有人问过这个问题我很抱歉。我正在编写一个网站,需要频繁编辑和检查HTML/CSS。我发现每次都要按Ctrl+反引号来终止服务器,然后重新运行,再检查网站效果,进行修改,如此反复,效率非常低下。
如果这个过程能实现自动化,将会非常有益。
您的建议可以是关于Go库/工具或与VS Code相关的解决方案。
如果需要自动重新编译功能,可以使用以下工具:
用于自动重新编译和自动重启Golang服务器的Docker镜像 - acim/go-reflex
不过该工具可能无法响应模板文件的更改,因此您可能需要稍作修改以支持其他文件扩展名的变更监测。如果需要某些功能但不想自行修改,欢迎提交issue或PR。
更多关于Golang中VSCode实现文件修改后自动重启服务器的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
在Go开发中,可以通过使用air工具实现文件修改后自动重启服务器的功能。air是一个实时重载工具,能够监控文件变化并自动重新构建和运行Go应用程序。
安装air
使用以下命令安装air:
go install github.com/cosmtrek/air@latest
配置air
在项目根目录创建.air.toml配置文件:
root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"
[build]
cmd = "go build -o ./tmp/main ."
bin = "tmp/main"
log = "air.log"
include_ext = ["go", "tpl", "tmpl", "html", "css"]
exclude_dir = ["assets", "tmp", "vendor", "testdata"]
include_dir = []
exclude_file = []
delay = 1000
stop_on_root = false
send_interrupt = false
kill_delay = 500
[log]
time = false
[color]
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"
[misc]
clean_on_exit = true
在VS Code中运行
- 在VS Code中打开终端
- 运行命令:
air
示例代码结构
假设项目结构如下:
project/
├── main.go
├── templates/
│ └── index.html
├── static/
│ └── style.css
└── .air.toml
main.go示例:
package main
import (
"fmt"
"html/template"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
tmpl := template.Must(template.ParseFiles("templates/index.html"))
tmpl.Execute(w, nil)
})
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
fmt.Println("Server running on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
在VS Code中配置任务
在.vscode/tasks.json中添加:
{
"version": "2.0.0",
"tasks": [
{
"label": "run with air",
"type": "shell",
"command": "air",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
}
}
]
}
现在当你修改任何Go文件、HTML模板或CSS文件时,air会自动检测变化并重启服务器。你可以通过按Ctrl+Shift+B来启动这个任务,或者直接在终端运行air命令。
这种方法比手动停止和重启服务器更高效,特别适合在开发阶段频繁修改前端文件的场景。

