内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

文件變更時(shí)自動(dòng)重載Go程序的方法有哪些

這篇文章主要介紹文件變更時(shí)自動(dòng)重載Go程序的方法有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)公司是專業(yè)的曹縣網(wǎng)站建設(shè)公司,曹縣接單;提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行曹縣網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

文件變更時(shí)自動(dòng)重載Go程序的方法有哪些

許多人希望在寫GO時(shí)擁有實(shí)時(shí)加載代碼(熱編譯)的效果,特別是那些習(xí)慣使用 JavaScript,Python和Ruby等解釋語(yǔ)言的人,本文介紹了5種實(shí)時(shí)重新加載Go程序的方法。

本文假設(shè)已安裝Go編譯器,并且已將GOPATH/bin路徑添加到PATH環(huán)境變量中。

在開始之前,我們先創(chuàng)建一個(gè)簡(jiǎn)單的web服務(wù)器,可以返回響應(yīng)內(nèi)容”Hello,World”。

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

    http.ListenAndServe(":5000", nil)}

Method 1: 使用Air

Air 是一個(gè)命令行程序,可以為Go程序提供實(shí)時(shí)代碼加載。

通過運(yùn)行以下命令來安裝Air。

go get -u github.com/cosmtrek/air

下一步,在使用項(xiàng)目的根目錄中創(chuàng)建Air配置文件.air.conf。

# .air.conf
# toml配置文件來源于 [Air](https://github.com/cosmtrek/air)# 工作區(qū)間
# .(當(dāng)前目錄)或絕對(duì)路徑, 注意這些目錄都在根目錄下面.root = "." tmp_dir = "tmp"[build]# 只是普通的shell命令。 可以使用`make`。
cmd = "go build -o ./tmp/main ."# `cmd`配置命令輸出的二進(jìn)制文件的位置。
bin = "tmp/main"# 自定義二進(jìn)制輸出。
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"# 監(jiān)聽的文件擴(kuò)展后綴列表。
include_ext = ["go", "tpl", "tmpl", "html"]# 忽略這些文件擴(kuò)展名或目錄。
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"]# 如果指定,則監(jiān)聽包含這些文件。
include_dir = []# 忽略文件列表.exclude_file = []# 如果文件修改太頻繁,則不必在每次修改時(shí)都立刻觸發(fā)構(gòu)建,設(shè)置觸發(fā)等待時(shí)間。
delay = 1000 # ms
# 發(fā)生編譯錯(cuò)誤時(shí),是否停止舊的二進(jìn)制程序。
stop_on_error = true# 該日志文件放置在tmp_dir中。
log = "air_errors.log"[log]# 日志是否顯示時(shí)間
time = false[color]# 自定義每類輸出的顏色。 如果找不到這個(gè)顏色,使用原本的日志輸出演示。
main = "magenta"watcher = "cyan"build = "yellow"runner = "green"[misc]# 退出時(shí)是否刪除臨時(shí)目錄
clean_on_exit = true

配置是簡(jiǎn)單明了的,請(qǐng)根據(jù)你的項(xiàng)目情況去調(diào)整。

最后,不要使用常用的go run命令來運(yùn)行Go程序,而應(yīng)使用air命令來啟動(dòng)程序。

Method 2: docker運(yùn)行Ari

這種方法需要使用docker,如果你沒有安裝,可以按照

我們?nèi)詫⑹褂肁ir庫(kù),因此仍然需要Air配置文件。 如果你還沒有,請(qǐng)創(chuàng)建一個(gè)配置文件。

Docker鏡像cosmtrek/air附帶安裝了Air命令,并且GOPATH環(huán)境變量設(shè)置為/go

我們只需要將我們的項(xiàng)目目錄掛載到Docker容器的GOPATH中,并使用-p暴露需要使用的端口即可。 我們可以通過運(yùn)行docker run命令來實(shí)現(xiàn)這一點(diǎn):

docker run -it --rm -w <WORKING_DIR> -v <PROJECT_FOLDER>:<MOUNT_POINT> -p <HOST_PORT>:<CONTAINER_PORT> <IMAGE_NAME>

就我而言,我需要運(yùn)行以下命令:

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

解釋:

使用-v參數(shù)將項(xiàng)目目錄 /home/praveen/go/src/github.com/praveen001/live-reloading 掛載到容器里面的GOPATH中的目錄/go/src/github.com/praveen001/live-reloading

-v /home/praveen/go/src/github.com/praveen001/live-reloading:/go/src/github.com/praveen001/live-reloading

使用-w參數(shù)指定掛載目錄成工作目錄。

-w /go/src/github.com/praveen001/live-reloading

Web服務(wù)器正在監(jiān)聽端口5000,因此需要使用-p標(biāo)志將容器端口5000暴露到主機(jī)端口5000。

-p 5000:5000

最后,指定docker鏡像名稱cosmtrek / air。

Method 3: 使用Gin

Gin是另一個(gè)用于實(shí)時(shí)重新加載Go應(yīng)用程序的命令行程序。

通過運(yùn)行以下命令來安裝Gin。

go get github.com/codegangsta/gin

而不是使用通常的go run main.go命令運(yùn)行應(yīng)用程序,而是使用gin命令。

就我而言,--appPort參數(shù)告訴Gin監(jiān)聽端口5000,--port參數(shù)告訴Gin代理監(jiān)聽端口3000端口

gin --appPort 5000 --port 3000

現(xiàn)在使用地址http://localhost:3000訪問Gin程序.

如果要排除監(jiān)聽那個(gè)目錄可以使用--excludeDir參數(shù),例如:

gin --appPort 5000 --port 3000 --excludeDir ./frontend

如果你項(xiàng)使用Gin實(shí)現(xiàn)加載沒有啟動(dòng)端口監(jiān)聽的程序,你們必須使用--immediate參數(shù)。但是Gin仍然會(huì)去5000端口。

你可以在這找到所有受支持的參數(shù)Gin的Github.

Method 4: 使用Nodemon

Nodemon是另一個(gè)用于實(shí)時(shí)重新加載Node應(yīng)用程序的命令行程序。 但是可以通過使用--exec參數(shù)設(shè)置啟動(dòng)命令用于啟動(dòng)其他應(yīng)用程序。

Nodemon需要安裝Nodejs和NPM。 如果沒有安裝,可以按照nodejs的官方文檔進(jìn)行安裝.

運(yùn)行以下命令來安裝nodemon:

npm install -g nodemon

現(xiàn)在,我們可以通過運(yùn)行以下命令來使用Nodemon運(yùn)行Web服務(wù)器:

nodemon --exec go run main.go --signal SIGTERM

如果要配置Nodemon,請(qǐng)?jiān)陧?xiàng)目的根目錄中創(chuàng)建配置文件nodemon.json。 完整可用的示例配置文件

Method 5: 使用Fresh

Fresh 是另一個(gè)GO實(shí)現(xiàn)的用于實(shí)時(shí)重新加載Go的程序

安裝Fresh

go get github.com/pilu/fresh

而不是使用常用的go run main.go命令來運(yùn)行應(yīng)用程序,而是使用fresh命令。

fresh

要配置Fresh,需要在項(xiàng)目的根目錄中創(chuàng)建一個(gè)配置文件runner.conf。

這是一個(gè)示例配置文件。

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:

以上是文件變更時(shí)自動(dòng)重載Go程序的方法有哪些的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

分享名稱:文件變更時(shí)自動(dòng)重載Go程序的方法有哪些
標(biāo)題URL:http://www.rwnh.cn/article10/jisddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)公司、網(wǎng)頁(yè)設(shè)計(jì)公司、微信小程序關(guān)鍵詞優(yōu)化、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
饶河县| 洛浦县| 开平市| 古蔺县| 余江县| 新田县| 彰化市| 东光县| 巴彦淖尔市| 乌什县| 娄烦县| 濮阳县| 宁陵县| 武城县| 贵州省| 万州区| 兴城市| 周宁县| 宁都县| 澄城县| 余江县| 伊川县| 鹤庆县| 富民县| 华蓥市| 东城区| 丹寨县| 运城市| 汤原县| 尤溪县| 广州市| 迭部县| 文成县| 濮阳市| 德保县| 贡山| 白河县| 余干县| 伽师县| 怀集县| 定襄县|