Golang開発:環境(5)リアルタイムローディングツールginの使用

ginツールは、golang開発において非常に便利で効果的なツールであり、goプログラムの開発とデバッグの効率を効果的に向上させます。

ジンをリアルタイムでコンパイルする

ジンを使う理由

golangはコンパイルされた言語であることがわかっています。つまり、goプログラムが変更されるたびに、変更の結果を表示する必要がある場合は、それを再コンパイルする必要があります。つまり、gobuildです。 go web、それは他のインタープリター言語からのものかもしれません。はい、それはこの種のデバッグと開発には特に適していません。コードを変更した後、gobuildをコンパイルする必要があります。そして、ジンはこの要求を解決するように見えました。

ジンの公式説明を見てください

ginは、GoWebアプリケーションをリアルタイムでリロードするためのシンプルなコマンドラインユーティリティです。アプリケーションディレクトリでginを実行するだけで、Webアプリケーションはginをプロキシサービスとして使用します。ginがコードの変更を検出すると、コードを自動的に再コンパイルします。アプリケーションは、次にHTTPリクエストを受信したときに再起動します。

ジンをインストールする

もちろん、最初はもちろん仮想マシンにginをインストールすることです

vagrant ssh
go get github.com/codegangsta/gin

gin -h
NAME:
   gin - A live reload utility for Go web applications.

USAGE:
   gin [global options] command [command options] [arguments...]

VERSION:
   0.0.0

COMMANDS:
     run, r   Run the gin proxy in the current working directory
     env, e   Display environment variables set by the .env file
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --laddr value, -l value       listening address for the proxy server [$GIN_LADDR]
   --port value, -p value        port for the proxy server (default: 3000) [$GIN_PORT]
   --appPort value, -a value     port for the Go web server (default: 3001) [$BIN_APP_PORT]
   --bin value, -b value         name of generated binary file (default: "gin-bin") [$GIN_BIN]

上記のメッセージは、インストールが成功したことを示しています。

ジンを使う

開発で最も一般的に使用されるginコマンドを理解する

--laddr value, -l value       listening address for the proxy server [$GIN_LADDR]
监听代理服务器的地址 系统变量[$GIN_LADDR]
--port value, -p value        port for the proxy server (default: 3000)  [$GIN_PORT] 
代理服务器的端口号 默认3000 系统变量[$GIN_PORT] 
--appPort value, -a value     port for the Go web server (default: 3001)  [$BIN_APP_PORT]
转发给Go web服务的端口 默认3001 系统变量[$BIN_APP_PORT]
--bin value, -b value         name of generated binary file (default: "gin-bin") [$GIN_BIN]
Go生成的二进制可执行文件的名称 默认gin-bin 系统变量[$GIN_BIN]
--path value, -t value        Path to watch files from (default: ".")  [$GIN_PATH]
监听文件改动的目录 默认 . 系统变量[$GIN_PATH]
--build value, -d value       Path to build files from (defaults to same value as --path) [$GIN_BUILD]
编译Go 程序的目录 默认 . 系统变量[$GIN_BUILD]
--all                         reloads whenever any file changes, as opposed to reloading only on .go file change 系统变量[$GIN_ALL]
监听所有文件的修改,都会重新编译。如果不加all就只会监听go文件的修改 系统变量[$GIN_ALL]

以下のシステム変数名を使用して、これらの変数を設定できます。
基本的な開発をマスターすれば、これらのコマンドは問題ありません。

栗をあげる

新しいWebサービスを作成する
Goの単純なWebサービスコードを見てください

package main

import (
	"fmt"
	"net/http"
	"log"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello world!")
}

func main() {
	http.HandleFunc("/", sayhelloName)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}
}

このコードがコンパイルされると、WEBサービスの開始後にポート9090をリッスンします。
ginを使用して、このサービスをコンパイルして開始します。
物理マシンから仮想マシンにマップされます。

192.168.0.10
配置
Vagrant.configure("2") do |config|
  config.vm.box = "base"
  config.vm.box_check_update = false
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.network "private_network", ip: "192.168.0.10"
  config.vm.synced_folder "/data/www","/data/www",create:true
  config.ssh.username = "root"
  config.ssh.private_key_path = "/Users/XXX/.ssh/id_rsa"
end

仮想マシンにvagrantログインしてサービスを開始します

sudo vagrant ssh
cd 项目目录
gin -p 3000 -a 9090 -b test.bin --all run
表示监听虚拟机的3000端口,将请求转发给9000端口,生成的二进制执行文件 test.bin,所有文件的改动都会引起项目编译

もちろん、上記のパラメータは後で追加できます。パスとビルドは現在のディレクトリにあるため、デフォルトを使用します
。curlでテストしてみましょう

curl http://192.168.0.10:3000
Hello world!

出力ファイルを変更します

fmt.Fprintf(w, "Hello China!")

Ctrl + Sで保存するときは、コンパイルされた情報を参照してください

[gin] Building...
[gin] Build finished

もう一度テストしましょう

curl http://192.168.0.10:3000
Hello China!

もちろん、システム変数を使用してginサービスを開始し、test.sh作成することもでき
ます。

export GIN_PORT="3000"
export BIN_APP_PORT="9090"
export GIN_BIN="test.bin"
export GIN_ALL=1
gin run

chmod +x test.sh
./test.sh

結果は上記のコマンドラインと同じです。

終わり

Ginを使用すると、gowebのデバッグは基本的にPHPNODEや他のインタープリター言語と同じです。gobuildの後に毎回テストをリクエストする必要はありません。シェルスクリプトを開始するだけで、ginは自動的にコンパイルします。コードを変更します。

もっと受け取りたい場合は、ginhttps ://github.com/codegangsta/ginの公式指示に従って
ください

おすすめ

転載: blog.csdn.net/feifeixiang2835/article/details/92848583