日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
又有新功能!Go將有生成新模板的gonew工具鏈

大家好,我是煎魚(yú)。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到大石橋網(wǎng)站設(shè)計(jì)與大石橋網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋大石橋地區(qū)。

不知道大家平時(shí)在日常工作中,會(huì)不會(huì)遇到一個(gè)問(wèn)題?公司用著微服務(wù)架構(gòu),經(jīng)常要?jiǎng)?chuàng)建新的服務(wù),需要一個(gè)應(yīng)用模板去初始化新的服務(wù),減少 ctrl+c+v,轉(zhuǎn)為相對(duì)自動(dòng)化。

不同團(tuán)隊(duì)根據(jù) Leader 的喜好、要求不同,應(yīng)用模板又會(huì)不同。有的喜歡 DDD、有的喜歡 MVC、有的大道至簡(jiǎn)即可。每家公司都會(huì)延伸出一個(gè)工具鏈做這個(gè)事情。

新工具:gonew 生成模板

在 Go 社區(qū)也出現(xiàn)了這種訴求,Go 核心團(tuán)隊(duì)帶頭大哥 @Russ Cox 發(fā)起了一個(gè)新討論《gonew: templates for new modules[1]》,引發(fā)了各方的熱議:

圖片

原因是:Go 團(tuán)隊(duì)經(jīng)常收到用戶(hù)反饋要求使用某種 "go new" 功能,以某種基本模板啟動(dòng)一個(gè)新的模塊(項(xiàng)目)。

這個(gè)工具不局限于 Go 團(tuán)隊(duì)提供的模板,任何人都可以定義這個(gè)模板。這個(gè)模板也是很 “普通”,沒(méi)什么特殊的功能。

"go new" 的核心工作是下載一個(gè)模板,更改其模塊路徑,然后把它放到一個(gè)新的目錄中進(jìn)行編輯。當(dāng)然這個(gè)工具鏈未來(lái)可能還有更多的功能,但這就是最核心的訴求。

也出現(xiàn)了一個(gè)新的場(chǎng)景。有一名圖書(shū)作者,希望能夠更方便的提供圖書(shū)示例,不想要圖書(shū)讀者費(fèi)盡心思克隆一個(gè) git 倉(cāng)庫(kù)。答案顯而易見(jiàn),那就是本文提到的 gonew 工具。

快速體驗(yàn)和實(shí)操

結(jié)合前后事跡來(lái)看,@Russ Cox 是一個(gè)執(zhí)行效率比較高的人。提出討論的前幾個(gè)月,已經(jīng)寫(xiě)好了工具給大家試用了。

安裝命令如下:

$ go install golang.org/x/tools/cmd/gonew@latest
go: downloading golang.org/x/tools v0.11.1
go: downloading golang.org/x/mod v0.12.0

創(chuàng)建命令如下:

$ gonew golang.org/x/example/hello
gonew: initialized golang.org/x/example/hello in ./hello

執(zhí)行完畢后,會(huì)在當(dāng)前目錄下,創(chuàng)建一個(gè) hello 目錄(./hello)。模板的結(jié)構(gòu)如下:

$ tree hello 
hello
├── LICENSE
├── go.mod
├── hello.go
└── reverse
    ├── example_test.go
    ├── reverse.go
    └── reverse_test.go

1 directory, 6 files

我對(duì)比了一下,和模板基準(zhǔn)的 git 倉(cāng)庫(kù) github.com/golang/example 的相關(guān)代碼是一致的。

可能會(huì)有同學(xué)說(shuō),不行啊。我還要改 module path。這點(diǎn)在現(xiàn)在也是已經(jīng)支持的了。

如下命令:

$ gonew github.com/ServiceWeaver/template example.com/foo
gonew: initialized example.com/foo in ./foo

生成目錄:

$ tree foo
foo
├── LICENSE
├── README.md
├── go.mod
├── go.sum
├── main.go
├── weaver.toml
└── weaver_gen.go

對(duì)應(yīng)生成的目錄名是指定的 foo,創(chuàng)建出來(lái)的 go.mod 文件的 module path 是:module example.com/foo。

符合上面提的要求。

一些討論

結(jié)合討論的內(nèi)容來(lái)看,大家的反饋都是比較積極支持的。因?yàn)榇_實(shí)看到社區(qū)里很多人為此做了一模一樣的事情,各語(yǔ)言都有,真的是各顯神通了。

圖片

有個(gè)別同學(xué)支持將本文提到的 go new 放到 go mod init 中,這樣就不需要再單獨(dú)創(chuàng)造一個(gè)新的命令集。

提出的同學(xué)認(rèn)為 go mod init 本質(zhì)上也是在引導(dǎo) Go 應(yīng)用的使用,和 go new 比較類(lèi)似。可以調(diào)整為:

go mod init example.com/x/abc --template github.com/ServiceWeaver/template

以此滿(mǎn)足一樣的訴求。

不過(guò)我感覺(jué)這命令就太長(zhǎng)了,沒(méi) go new 那么短小精悍。

總結(jié)

本次 go new 工具的討論和實(shí)驗(yàn),Go 團(tuán)隊(duì)非常迅速。目測(cè)勢(shì)在必得,肯定會(huì)加進(jìn)去了。

因?yàn)楦鶕?jù)反饋 Google 的幾個(gè)團(tuán)隊(duì)也有興趣嘗試使用 gonew 進(jìn)行模板化。ServiceWeaver 團(tuán)隊(duì)對(duì)此也非常感興趣。

功能雖然非常簡(jiǎn)單,但基本滿(mǎn)足了不同的團(tuán)隊(duì)為了不同的代碼模板,創(chuàng)建一個(gè)新的模板的訴求。一旦成熟,也就不需要人均手搓一個(gè)模板的腳手架工具了。

后續(xù)各自在工具鏈套一下就 OK,一個(gè)快速的小成果就好了。推薦大家試用,又或是覺(jué)得還需要什么功能補(bǔ)充,也歡迎隨時(shí)留言。


網(wǎng)站題目:又有新功能!Go將有生成新模板的gonew工具鏈
標(biāo)題路徑:http://m.5511xx.com/article/cdpdsgs.html