Golang中VSCode实现文件修改后自动重启服务器的方法

Golang中VSCode实现文件修改后自动重启服务器的方法 如果之前有人问过这个问题我很抱歉。我正在编写一个网站,需要频繁编辑和检查HTML/CSS。我发现每次都要按Ctrl+反引号来终止服务器,然后重新运行,再检查网站效果,进行修改,如此反复,效率非常低下。

如果这个过程能实现自动化,将会非常有益。

您的建议可以是关于Go库/工具或与VS Code相关的解决方案。

2 回复

如果需要自动重新编译功能,可以使用以下工具:

GitHub

acim/go-reflex

用于自动重新编译和自动重启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中运行

  1. 在VS Code中打开终端
  2. 运行命令:
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命令。

这种方法比手动停止和重启服务器更高效,特别适合在开发阶段频繁修改前端文件的场景。

回到顶部