Heim > Backend-Entwicklung > Golang > Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern

Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern

藏色散人
Freigeben: 2020-11-03 15:19:58
nach vorne
2909 Leute haben es durchsucht

die Methode zum automatischen Laden des GO-Programms beim Ändern von 5 Dateien vorstellen. Ich hoffe, es wird Freunden in Not hilfreich sein!

Viele Menschen hoffen, beim Schreiben von GO den Effekt eines Echtzeit-Neuladens von Code (Hot Compilation) zu erzielen, insbesondere diejenigen, die es gewohnt sind, interpretierte Sprachen wie JavaScript, Python und Ruby zu verwenden Methoden zum Echtzeit-Neuladen von Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern-Programmen.

Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern

In diesem Artikel wird davon ausgegangen, dass der Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern-Compiler installiert wurde und der Pfad GOPATH/bin zur Umgebungsvariablen PATH hinzugefügt wurde.

Bevor wir beginnen, erstellen wir zunächst einen einfachen Webserver, der den Antwortinhalt „Hello, World“ zurückgeben kann.

package mainimport (
    "net/http")func main() {
    http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello, World"))
    })

    http.ListenAndServe(":5000", nil)}
Nach dem Login kopieren
GOPATH/bin路径添加到PATH环境变量中。

在开始之前,我们先创建一个简单的web服务器,可以返回响应内容”Hello,World”。

go get -u github.com/cosmtrek/air
Nach dem Login kopieren

Method 1: 使用Air

Air 是一个命令行程序,可以为Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern程序提供实时代码加载。

通过运行以下命令来安装Air。

# .air.conf
# toml配置文件来源于 [Air](https://github.com/cosmtrek/air)# 工作区间
# .(当前目录)或绝对路径, 注意这些目录都在根目录下面.root = "." tmp_dir = "tmp"[build]# 只是普通的shell命令。 可以使用`make`。
cmd = "go build -o ./tmp/main ."# `cmd`配置命令输出的二进制文件的位置。
bin = "tmp/main"# 自定义二进制输出。
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"# 监听的文件扩展后缀列表。
include_ext = ["go", "tpl", "tmpl", "html"]# 忽略这些文件扩展名或目录。
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]# 如果指定,则监听包含这些文件。
include_dir = []# 忽略文件列表.exclude_file = []# 如果文件修改太频繁,则不必在每次修改时都立刻触发构建,设置触发等待时间。
delay = 1000 # ms
# 发生编译错误时,是否停止旧的二进制程序。
stop_on_error = true# 该日志文件放置在tmp_dir中。
log = "air_errors.log"[log]# 日志是否显示时间
time = false[color]# 自定义每类输出的颜色。 如果找不到这个颜色,使用原本的日志输出演示。
main = "magenta"watcher = "cyan"build = "yellow"runner = "green"[misc]# 退出时是否删除临时目录
clean_on_exit = true
Nach dem Login kopieren

下一步,在使用项目的根目录中创建Air配置文件.air.conf

docker run -it --rm -w <working_dir> -v <project_folder>:<mount_point> -p <host_port>:<container_port> <image_name></image_name></container_port></host_port></mount_point></project_folder></working_dir>
Nach dem Login kopieren

配置是简单明了的,请根据你的项目情况去调整。

最后,不要使用常用的go run命令来运行Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern程序,而应使用air命令来启动程序。

Method 2: docker运行Ari

这种方法需要使用docker,如果你没有安装,可以按照

我们仍将使用Air库,因此仍然需要Air配置文件。 如果你还没有,请创建一个配置文件。

Docker镜像cosmtrek/air附带安装了Air命令,并且GOPATH环境变量设置为/go

我们只需要将我们的项目目录挂载到Docker容器的GOPATH中,并使用-p暴露需要使用的端口即可。 我们可以通过运行docker run命令来实现这一点:

docker run -it --rm -w /go/src/github.com/praveen001/live-reloading -v /go/src/github.com/praveen001/live-reloading:/go/src/github.com/praveen001/live-reloading -p 5000:5000 cosmtrek/air
Nach dem Login kopieren

就我而言,我需要运行以下命令:

-v /home/praveen/go/src/github.com/praveen001/live-reloading:/go/src/github.com/praveen001/live-reloading
Nach dem Login kopieren

解释:

使用-v参数将项目目录 /home/praveen/go/src/github.com/praveen001/live-reloading 挂载到容器里面的GOPATH中的目录/go/src/github.com/praveen001/live-reloading

-w /go/src/github.com/praveen001/live-reloading
Nach dem Login kopieren

使用-w参数指定挂载目录成工作目录。

-p 5000:5000
Nach dem Login kopieren

Web服务器正在监听端口5000,因此需要使用-p标志将容器端口5000暴露到主机端口5000。

go get github.com/codegangsta/gin
Nach dem Login kopieren

最后,指定docker镜像名称cosmtrek / air

Method 3: 使用Gin

Gin是另一个用于实时重新加载Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern应用程序的命令行程序。

通过运行以下命令来安装Gin。

gin --appPort 5000 --port 3000
Nach dem Login kopieren

而不是使用通常的go run main.go命令运行应用程序,而是使用gin命令。

就我而言,--appPort参数告诉Gin监听端口5000,--port参数告诉Gin代理监听端口3000端口

gin --appPort 5000 --port 3000 --excludeDir ./frontend
Nach dem Login kopieren

现在使用地址http://localhost:3000访问Gin程序.

如果要排除监听那个目录可以使用--excludeDir参数,例如:

npm install -g nodemon
Nach dem Login kopieren

如果你项使用Gin实现加载没有启动端口监听的程序,你们必须使用--immediate参数。但是Gin仍然会去5000端口。

你可以在这找到所有受支持的参数Gin的Github.

Method 4: 使用Nodemon

Nodemon是另一个用于实时重新加载Node应用程序的命令行程序。 但是可以通过使用--exec参数设置启动命令用于启动其他应用程序。

Nodemon需要安装Nodejs和NPM。 如果没有安装,可以按照nodejs的官方文档进行安装.

运行以下命令来安装nodemon:

nodemon --exec go run main.go --signal SIGTERM
Nach dem Login kopieren

现在,我们可以通过运行以下命令来使用Nodemon运行Web服务器:

go get github.com/pilu/fresh
Nach dem Login kopieren

如果要配置Nodemon,请在项目的根目录中创建配置文件nodemon.json。 完整可用的示例配置文件

Method 5: 使用Fresh

Fresh 是另一个GO实现的用于实时重新加载Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern的程序

安装Fresh

fresh
Nach dem Login kopieren

而不是使用常用的go run main.go命令来运行应用程序,而是使用fresh命令。

root:              .tmp_path:          ./tmp
build_name:        runner-build
build_log:         runner-build-errors.log
valid_ext:         .go, .tpl, .tmpl, .html
no_rebuild_ext:    .tpl, .tmpl, .html
ignored:           assets, tmp
build_delay:       600colors:            1log_color_main:    cyan
log_color_build:   yellow
log_color_runner:  green
log_color_watcher: magenta
log_color_app:
Nach dem Login kopieren

要配置Fresh,需要在项目的根目录中创建一个配置文件runner.conf

Methode 1: Verwenden von Air

Air ist ein Befehlszeilenprogramm, das das Laden von Code in Echtzeit für Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern-Programme ermöglichen kann. Installieren Sie Air, indem Sie den folgenden Befehl ausführen.

rrreee

Als nächstes erstellen Sie die Air-Konfigurationsdatei .air.conf im Stammverzeichnis Ihres Projekts.

rrreee🎜Die Konfiguration ist einfach und übersichtlich, bitte passen Sie sie entsprechend Ihrer Projektsituation an. 🎜🎜Verwenden Sie schließlich nicht den häufig verwendeten Befehl go run, um das Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern-Programm auszuführen. Verwenden Sie stattdessen den Befehl air, um das Programm zu starten. 🎜🎜🎜🎜Methode 2: Docker zum Ausführen von Ari🎜🎜Diese Methode erfordert Docker. Wenn Sie es nicht installiert haben, können Sie folgen 🎜🎜Wir werden weiterhin die Air-Bibliothek verwenden, daher ist die Air-Konfigurationsdatei weiterhin erforderlich. Falls noch nicht geschehen, erstellen Sie bitte ein Profil. 🎜🎜Das Docker-Image cosmtrek/air wird mit installiertem Air-Befehl geliefert und die Umgebungsvariable GOPATH ist auf /go gesetzt. 🎜🎜Wir müssen nur unser Projektverzeichnis im GOPATH des Docker-Containers mounten und -p verwenden, um die Ports freizugeben, die wir verwenden müssen. Wir können dies erreichen, indem wir den Docker-Run-Befehl ausführen: 🎜rrreee🎜In meinem Fall musste ich den folgenden Befehl ausführen: 🎜rrreee🎜🎜Erklärung: 🎜🎜🎜Verwenden Sie den Parameter -v, um das Projektverzeichnis in /home/praveen zu ändern / go/src/github.com/praveen001/live-reloading wird im Verzeichnis /go/src/github.com/praveen001/live-reloading im GOPATH im Container bereitgestellt . 🎜rrreee🎜Verwenden Sie den Parameter -w, um das Mountverzeichnis als Arbeitsverzeichnis anzugeben. 🎜rrreee🎜Der Webserver überwacht Port 5000, daher muss das Flag -p verwendet werden, um den Container-Port 5000 dem Host-Port 5000 zugänglich zu machen. 🎜rrreee🎜Geben Sie abschließend den Docker-Image-Namen cosmtrek/air an. 🎜🎜🎜🎜Methode 3: Verwendung von Gin 🎜🎜Gin ist ein weiteres Befehlszeilenprogramm zum Live-Neuladen von Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern-Anwendungen. 🎜🎜Installieren Sie Gin, indem Sie den folgenden Befehl ausführen. 🎜rrreee🎜Anstatt den üblichen Befehl go run main.go zum Ausführen der Anwendung zu verwenden, verwenden Sie den Befehl gin. 🎜🎜In meinem Fall hat der Parameter --appPort Gin angewiesen, auf Port 5000 zu lauschen, und der Parameter --port hat Gin angewiesen, auf Port 3000 zu lauschen. 🎜rrreee🎜Jetzt Verwenden Sie die Adresse http://localhost:3000Greifen Sie auf das Gin-Programm zu.🎜🎜Wenn Sie das Abhörverzeichnis ausschließen möchten, können Sie den Parameter --excludeDir verwenden, z Beispiel: 🎜rrreee🎜Wenn Ihr Projekt Gin zum Implementieren des Ladens verwendet. Wenn kein Programm zum Starten des Port-Listenings vorhanden ist, müssen Sie den Parameter --immediate verwenden. Aber Gin wird weiterhin zu Port 5000 gehen. 🎜🎜Alle unterstützten Parameter finden Sie in Gins Github. 🎜🎜🎜🎜Methode 4: Verwendung von Nodemon. 🎜🎜Nodemon ist ein weiteres Befehlszeilenprogramm zum Live-Neuladen von Node-Anwendungen. Der Startbefehl kann jedoch mithilfe des Parameters --exec so eingestellt werden, dass andere Anwendungen gestartet werden. 🎜🎜Nodemon erfordert die Installation von Nodejs und NPM. Wenn es nicht installiert ist, können Sie es gemäß der offiziellen Dokumentation von nodejs installieren. 🎜🎜 Führen Sie den folgenden Befehl aus, um nodemon zu installieren: 🎜rrreee🎜 Jetzt können wir Nodemon verwenden, um den Webserver auszuführen, indem wir den folgenden Befehl ausführen: 🎜rrreee 🎜 Wenn Sie Nodemon konfigurieren möchten, erstellen Sie bitte die Konfigurationsdatei nodemon.json im Stammverzeichnis des Projekts. Vollständige funktionierende Beispielkonfigurationsdatei🎜🎜🎜🎜Methode 5: Verwendung von Fresh🎜🎜Fresh ist eine weitere GO-Implementierung zum Live-Neuladen von Teilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern🎜🎜Install Fresh🎜rrreee🎜 anstelle der häufig verwendeten go run main .go-Befehl zum Ausführen der Anwendung verwenden, verwenden Sie stattdessen den Befehl fresh. 🎜rrreee🎜Um Fresh zu konfigurieren, müssen Sie eine Konfigurationsdatei runner.conf im Stammverzeichnis des Projekts erstellen. 🎜🎜Dies ist eine Beispielkonfigurationsdatei. 🎜rrreee🎜🎜🎜 Zusammenfassung 🎜🎜 Es gibt viele andere Tools wie: 🎜
  • Facebook's Watchman
  • Realize
  • Reflex
  • Sogar eine maßgeschneiderte Lösung

Ursprüngliche Adresse: https://techinscribed.com/5-ways-to-live-reloading-go-applications/

Übersetzung Adresse: https://learnku.com/go/t/51189

Das obige ist der detaillierte Inhalt vonTeilen Sie 5 Möglichkeiten, Go-Programme automatisch neu zu laden, wenn sich Dateien ändern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage