來(lái)自:碼農(nóng)網(wǎng)鸥昏,譯者:小峰
鏈接:www.codeceo.com/article/golang-framework-ide-tools.html(點(diǎn)擊尾部閱讀原文前往)
原文:https://dzone.com/articles/golang-guide-a-list-of-top-golang-frameworks-ides
自推出以來(lái),Google的Go編程語(yǔ)言(Golang)越來(lái)越受主流用戶的歡迎姐帚。在2016年12月的一份調(diào)研中吏垮,3,595名受訪者中有89%表明他們?cè)诠ぷ髦谢蚬ぷ饕酝庥肎o語(yǔ)言編程。
此外,在編程語(yǔ)言中膳汪,Go語(yǔ)言在專(zhuān)業(yè)知識(shí)和偏好方面排名最高唯蝶。2017年7月,在Tiobe的年度編程語(yǔ)言排名中遗嗽,Go語(yǔ)言從去年的第55名一躍跳到了第10名粘我。
顯然,Go語(yǔ)言吸引了來(lái)自不同學(xué)科的許多程序員和軟件開(kāi)發(fā)外包專(zhuān)業(yè)人士痹换≌髯郑可以這么說(shuō),這全都是因?yàn)镚o語(yǔ)言的易用性娇豫。
作為一種編譯型的開(kāi)源編程語(yǔ)言匙姜,Go語(yǔ)言能使開(kāi)發(fā)人員輕松構(gòu)建簡(jiǎn)單可靠又高效的軟件。它是更保守的語(yǔ)言冯痢,如C和C ++的創(chuàng)新和演變的產(chǎn)物氮昧。
使用Go語(yǔ)言,可以減少代碼輸入量浦楣,并且編寫(xiě)穩(wěn)健的API而不犧牲性能變得更加容易袖肥。 Go語(yǔ)言旨在實(shí)現(xiàn)可擴(kuò)展性和并發(fā)性,從而實(shí)現(xiàn)優(yōu)化振劳。編譯器可以在運(yùn)行時(shí)前執(zhí)行所有代碼檢查工作椎组。
我們收羅了Golang的頂級(jí)框架、IDE和工具列表澎迎,以供大家快速參考庐杨。建議添加到瀏覽器書(shū)簽中,以便隨時(shí)查看夹供!
Golang框架
Web框架可以幫助開(kāi)發(fā)人員盡可能方便快捷地構(gòu)建應(yīng)用程序灵份。Go語(yǔ)言還比較新,所以使用的框架帶有充足的文檔很重要哮洽。
這里有9個(gè)框架可幫助你使用Go語(yǔ)言構(gòu)建項(xiàng)目填渠。
1、Revel
作為Go語(yǔ)言的高效生產(chǎn)力框架鸟辅,Revel包含的Hot Code Reload工具可以讓你在每次更改文件時(shí)重建項(xiàng)目氛什。它還包括各種全面和高性能的功能,因此你不需要找外部庫(kù)集成到框架中匪凉。
2枪眉、Beego
Beego是一個(gè)完整的MVC框架,有自己的日志庫(kù)再层、ORM和Web框架贸铜。你不需要再去安裝第三方庫(kù)堡纬。它有一個(gè)稱(chēng)為Bee Tool的內(nèi)置工具,用于監(jiān)視代碼更改蒿秦,并在檢測(cè)到更改時(shí)運(yùn)行任務(wù)烤镐。
Beego可以為你節(jié)省很多時(shí)間,特別是在項(xiàng)目一開(kāi)始棍鳖,你要弄清楚日志框架或應(yīng)用程序結(jié)構(gòu)的時(shí)候炮叶。
3、Martini
受Sinatra啟發(fā)渡处,Martini是一個(gè)極其輕巧但功能強(qiáng)大的框架镜悉。它被開(kāi)發(fā)用于用Golang編寫(xiě)模塊化Web應(yīng)用程序和服務(wù)。
它的特點(diǎn)是非侵入式設(shè)計(jì)骂蓖,快速易用积瞒,且包括各種處理程序和中間件。它能夠?yàn)镠TML5模式的AngularJS應(yīng)用程序執(zhí)行基本路由登下,異常處理和默認(rèn)文檔服務(wù)茫孔。
Martini的最佳功能是可以使用反射,它允許開(kāi)發(fā)人員動(dòng)態(tài)地將數(shù)據(jù)插入到處理函數(shù)中并添加新的服務(wù)被芳。Martini也完全兼容http.HandlerFunc界面缰贝。不過(guò),缺點(diǎn)在于Martini框架不再維護(hù)了畔濒。
4剩晴、Gin Gonic
Gin Gonic是一個(gè)Web框架,有類(lèi)似Martini的API侵状,但性能更好赞弥。如果你以前使用過(guò)Martini,那么你也一定熟悉Gin Gonic趣兄。沒(méi)用過(guò)Martini也沒(méi)關(guān)系绽左,只需要學(xué)習(xí)10分鐘就能掌握Gin。就是這么容易艇潭!
Gin Gonic是一個(gè)極簡(jiǎn)化的框架拼窥,僅包含最重要的庫(kù)和功能。這使得它非常適合開(kāi)發(fā)高性能REST API蹋凝。此外鲁纠,它比Martini快四十倍。
你可以添加中間件鳍寂、嵌套組改含、JSON驗(yàn)證以及渲染,并依然保持其最佳性能迄汛。Gin Gonic使用httprouter捍壤,Go語(yǔ)言最快的HTTP路由器刃唤。
5、Buffalo
要構(gòu)建Go語(yǔ)言新的Web應(yīng)用程序白群,使用Buffalo是一個(gè)快速又簡(jiǎn)單的方法。當(dāng)你開(kāi)始一個(gè)新項(xiàng)目時(shí)硬霍,Buffalo可以為你提供一切——從前端到后端開(kāi)發(fā)帜慢。
它具有熱重載功能,這意味著dev命令將自動(dòng)查看.go和.html文件唯卖。然后粱玲,它將為你重建并重啟二進(jìn)制文件。運(yùn)行dev命令拜轨,你就能看到變化在你的眼前發(fā)生抽减!
Buffalo不僅僅是一個(gè)框架——它也是一個(gè)整體的Web開(kāi)發(fā)生態(tài)系統(tǒng),可以讓你直接構(gòu)建應(yīng)用程序橄碾。
6卵沉、Goji
Goji是一個(gè)輕量級(jí)的快速Web框架,將可組合性和簡(jiǎn)單性作為其主要優(yōu)先級(jí)法牲。很像net / http.ServeMux史汗,Goji是一個(gè)極簡(jiǎn)的HTTP請(qǐng)求復(fù)用器。它包括Einhorn支持拒垃,允許在Goji中提供Websocket支持停撞。
其他功能包括URL模式,可重新配置的中間件堆棧悼瓮,正常關(guān)機(jī)等戈毒。Goji可以用于生產(chǎn),并在若干組織中提供了數(shù)以億計(jì)個(gè)請(qǐng)求横堡。
7埋市、Tiger Tonic
受Dropwizard啟發(fā),Tiger Tonic是開(kāi)發(fā)JSON Web服務(wù)和構(gòu)建高性能REST API的Go框架翅萤。為了忠于Golang的原則恐疲,Tiger Tonic努力保持正交特性。
Tiger Tonic的缺點(diǎn)在于構(gòu)建大型后端應(yīng)用程序尚有不足之處套么。
8培己、Gocraft
這是又一個(gè)強(qiáng)大而簡(jiǎn)約的框架,Gocraft提供快速和可擴(kuò)展的路由性能胚泌。它將路由添加來(lái)自標(biāo)準(zhǔn)庫(kù)的net / http包中省咨。
Gocraft是一個(gè)Go mux和中間件軟件包,具有強(qiáng)大的投射和反射能力玷室,可以靜態(tài)輸入代碼零蓉。你還可以使用內(nèi)置中間件添加可選功能或者自己編寫(xiě)笤受。
由于性能始終是開(kāi)發(fā)人員最關(guān)心的問(wèn)題之一,所以Gocraft是開(kāi)發(fā)人員的絕佳選擇敌蜂。而且使用Gocraft框架編寫(xiě)后端Web應(yīng)用程序很容易箩兽。
9、Mango
雖然Mango沒(méi)有得到創(chuàng)作者Paul Bellamy的積極維護(hù)章喉,但Go語(yǔ)言的許多用戶仍然在使用它汗贫。Mango的優(yōu)勢(shì)在于它的模塊化。你可以從各種庫(kù)中選擇秸脱,以包含在你的項(xiàng)目中落包。
Mango讓你可以盡可能快速又輕松地構(gòu)建可重復(fù)使用的HTTP功能模塊。它將一系列中間件和應(yīng)用程序編譯成單個(gè)HTTP服務(wù)器對(duì)象摊唇,以保持代碼獨(dú)立咐蝇。
Golang的集成開(kāi)發(fā)環(huán)境(IDE)
Golang的IDE隨著Go語(yǔ)言的普及越來(lái)越受大家的歡迎。雖然還是有許多開(kāi)發(fā)人員仍然喜歡使用文本編輯器巷查,但也有很多開(kāi)發(fā)人員更傾向于使用IDE有序。
如果你正工作于具有廣泛代碼庫(kù)的大型項(xiàng)目,那么IDE可以幫助你輕松組織代碼和導(dǎo)航岛请。此外笔呀,IDE可以幫助你測(cè)試代碼并相應(yīng)地編輯。
以下是用Golang工作良好的頂尖IDE髓需。
1许师、Gogland
軟件開(kāi)發(fā)公司JetBrains發(fā)布了另一個(gè)可靠的IDE,這次是針對(duì)Golang發(fā)布的僚匆。Gogland是一個(gè)商業(yè)IDE微渠,為Go開(kāi)發(fā)人員提供了一個(gè)強(qiáng)大的人機(jī)工程學(xué)環(huán)境。它還具有編碼協(xié)助咧擂、調(diào)試器和集成終端的功能逞盆。
由于Gogland是由一家已成立的公司創(chuàng)建的,所以它擁有廣泛的IntelliJ插件生態(tài)系統(tǒng)松申,讓你可以在需要更多工具的時(shí)候獲得更多云芦。
2、Visual Studio Code
由Microsoft創(chuàng)建的Visual Studio Code是一個(gè)功能齊全的開(kāi)源IDE和代碼編輯器贸桶,支持各種各樣的編程語(yǔ)言舅逸。它的特點(diǎn)是智能完成;使用斷點(diǎn)調(diào)用皇筛、調(diào)用堆棧和交互式控制臺(tái)調(diào)試琉历;內(nèi)置Git集成;以及分層文件夾和文件瀏覽器。
作為另一個(gè)流行的IDE旗笔,Visual Studio Code有一個(gè)Go開(kāi)發(fā)人員定期貢獻(xiàn)的支持社區(qū)彪置。使用Visual Studio Code,你可以使用可用插件數(shù)組來(lái)擴(kuò)展功能蝇恶。
3拳魁、LiteIDE
LiteIDE是五年多前創(chuàng)建的首個(gè)以Golang為中心的開(kāi)源IDE。作為具有獨(dú)特外觀的C ++ Qt應(yīng)用程序撮弧,LiteIDE提供代碼管理的猛、可配置構(gòu)建命令、gdb和Delve調(diào)試器想虎,使用WordApi——基于MIME類(lèi)型的系統(tǒng)——自動(dòng)完成和創(chuàng)建等等。它還提供JSON和Golang支持叛拷。
4舌厨、Wide
Wide是Golang程序員使用的基于Web的IDE。它專(zhuān)為協(xié)作開(kāi)發(fā)而設(shè)計(jì)忿薇,適用于團(tuán)隊(duì)和Web開(kāi)發(fā)機(jī)構(gòu)裙椭。Wide功能包括代碼高亮、調(diào)試署浩、Git集成等揉燃。
因?yàn)閃ide是由一名中國(guó)開(kāi)發(fā)者創(chuàng)建和維護(hù)的,所以其大部分文檔和支持是中文的筋栋。
5炊汤、帶有Go-Plus插件的Atom
如果你已經(jīng)在使用Atom,那么你可以通過(guò)一個(gè)名為go-plus的開(kāi)源軟件包來(lái)改善Golang語(yǔ)言的代碼編輯體驗(yàn)弊攘。使用go-plus抢腐,你可以立即獲得關(guān)于語(yǔ)法和構(gòu)建錯(cuò)誤的實(shí)時(shí)反饋。
Go-plus軟件包提供了幾乎所有Atom中對(duì)Golang的支持襟交。它還可以用于工具迈倍,構(gòu)建流程,linters捣域,vet和coverage工具啼染。
Go-plus還包括各種代碼片段和功能,如gocode的自動(dòng)完成焕梅,gofmt迹鹅、goreturns或goimports等的代碼格式化。
6贞言、帶有GoClipse的Eclipse
由于Eclipse是廣受歡迎的IDE徒欣,因此我們?yōu)槠鋭?chuàng)建了許多插件。GoClipse是針對(duì)Golang的Eclipse插件蜗字,提供Go源代碼編輯打肝,具有可配置的語(yǔ)法高亮和自動(dòng)縮進(jìn)以及大括號(hào)完成功能脂新。
GoClipse還可以作為項(xiàng)目向?qū)Ш蜆?gòu)建器來(lái)立即報(bào)告語(yǔ)法和構(gòu)建錯(cuò)誤。GoClipse的其他功能包括調(diào)試功能和代碼輔助粗梭。
7争便、帶有GoSublime的Sublime Text
Sublime Text也是一個(gè)復(fù)雜的文本編輯器,具有大量的貢獻(xiàn)者和開(kāi)發(fā)者社區(qū)断医。因此滞乙,開(kāi)發(fā)者為此IDE創(chuàng)建了各種各樣的插件。
GoSublime是Sublime Text 3針對(duì)Golang的插件鉴嗤,在你編寫(xiě)代碼時(shí)斩启,提供來(lái)自Gocode的代碼完成,lint /語(yǔ)法檢查醉锅,自動(dòng)添加和刪除程序包導(dǎo)入兔簇,等等。
8硬耍、帶有Vim-Go插件的Vim
Vim是一個(gè)免費(fèi)的開(kāi)源IDE垄琐,可以定制和配置各種插件。如果你是Golang程序員经柴,那么你可以使用Vim中由Fatih Arslan創(chuàng)建的vim-go插件狸窘。Vim-go自動(dòng)安裝所有必需的二進(jìn)制文件,為Golang提供平滑的Vim集成坯认。
Vim-go是一款功能強(qiáng)大的插件套件翻擒,用于撰寫(xiě)和開(kāi)發(fā)Go。其功能包括高級(jí)源代碼分析牛哺,添加和刪除導(dǎo)入路徑韭寸,多次第三方支持,goto定義荆隘,快速文件執(zhí)行等等恩伺。
Vim-go是高度可定制的,可以根據(jù)你的需要啟用或禁用各種功能椰拒。
9晶渠、Komodo
Komodo是一個(gè)全功能的Go語(yǔ)言IDE,并且支持如Node.js燃观,Python褒脯,Ruby,Perl等其他編程語(yǔ)言缆毁。使用這個(gè)Go IDE番川,你可以輕松地編寫(xiě)干凈的代碼。其功能包括高級(jí)代碼編輯器,智能代碼完成颁督,語(yǔ)法檢查践啄,版本控制和單元測(cè)試,以及允許代碼瀏覽和代碼提示的Go Code Intelligence沉御。
Komodo的優(yōu)點(diǎn)是屿讽,它可以很好地協(xié)助團(tuán)隊(duì)合作,因?yàn)樵试S多個(gè)開(kāi)發(fā)人員同時(shí)編輯文檔吠裆。只要一個(gè)許可證伐谈,Komodo就可以安裝在Mac,Windows或Linux上试疙。
10诵棵、帶有Go語(yǔ)言(golang.org)支持插件的IntelliJ IDEA
IntelliJ IDEA(由JetBrains公司開(kāi)發(fā))是可以通過(guò)Go語(yǔ)言支持插件從而使用Golang的IDE。如果你想要在IntelliJ IDEA中使用Golang祝旷,那么你需要安裝此插件履澳,雖然不同于Gogland,它的功能有限缓屠。
Golang工具
Golang工具可用于各種項(xiàng)目和Web應(yīng)用程序。使用這些有用的工具可以幫助開(kāi)發(fā)人員盡可能快速而輕松地編寫(xiě)代碼并構(gòu)建應(yīng)用程序护侮。
這里有一系列頂級(jí)的Golang工具以供參考敌完。
1、Apicompat
Apicompat是一種新的Go語(yǔ)言工具羊初,可幫助開(kāi)發(fā)人員檢測(cè)向后不兼容的更改和導(dǎo)出的聲明滨溉。
你可以通過(guò)Apicompat避免誤報(bào)。但是长赞,Apicompat并不能檢測(cè)到每個(gè)向后不兼容的變化晦攒。并且,庫(kù)作者沒(méi)有考慮到交換參數(shù)和其他更改的需要得哆。
2脯颜、Checkstyle
受Java Checkstyle啟發(fā),針對(duì)Golang的Checkstyle輸出編碼風(fēng)格的建議贩据。它還允許開(kāi)發(fā)人員檢查文件行/函數(shù)和行/參數(shù)號(hào)栋操,然后由用戶進(jìn)行配置。
3饱亮、Depth
又一個(gè)有用的Golang工具矾芙,Depth可幫助Web開(kāi)發(fā)人員檢索和可視化Go源代碼依賴(lài)關(guān)系樹(shù)。它可以用作獨(dú)立的命令行應(yīng)用程序或作為項(xiàng)目中的特定包近上。你可以通過(guò)在解析之前在Tree上設(shè)置相應(yīng)的標(biāo)志來(lái)添加自定義剔宪。
4、Go-Swagger
該工具包包括各種功能和功能。Go-Swagger是Swagger 2.0的一個(gè)實(shí)現(xiàn)葱绒,可以序列化和反序列化swagger規(guī)范感帅。它是RESTful API簡(jiǎn)約但強(qiáng)大的代表。
通過(guò)Go-Swagger哈街,你可以swagger規(guī)范文檔留瞳,驗(yàn)證JSON模式以及其他額外的規(guī)則。其他功能包括代碼生成骚秦,基于swagger規(guī)范的API生成她倘,基于代碼的規(guī)范文檔生成,擴(kuò)展了的字符串格式作箍,等等硬梁。
5、Go Meta Linter
如果你需要運(yùn)行Go lint工具并同時(shí)使其輸出正嘲茫化荧止,那么Go Meta Linter可以為你辦到。Go Meta Linter旨在與文本編輯器或IDE集成阶剑,如如Sublime Linter插件跃巡,Atom go-plus包,Emacs Flycheck檢查器牧愁,Vim / Neovim素邪,以及Go for Visual Studio Code一起使用。它還支持各種各樣的linter和配置文件猪半,如JSON兔朦。
6、Go-callvis
Go-callvis是一個(gè)Web開(kāi)發(fā)工具磨确,允許你使用Graphviz的點(diǎn)格式可視化Go程序的調(diào)用圖沽甥。此工具在構(gòu)建具有復(fù)雜代碼庫(kù)的大型項(xiàng)目時(shí)特別有用。它在你想要了解另一個(gè)開(kāi)發(fā)人員的代碼結(jié)構(gòu)或重建別人的項(xiàng)目時(shí)乏奥,也很有用摆舟。
通過(guò)go-callvis,開(kāi)發(fā)人員可以在程序中關(guān)注特定包邓了;根據(jù)軟件包的分組函數(shù)和根據(jù)類(lèi)型的方法盏檐;以及將軟件包限制到自定義路徑前綴,并忽略那些包含它們的自定義前綴驶悟。
7胡野、Gonative
Gonative是一個(gè)簡(jiǎn)單的Golang工具,讓你能夠使用本機(jī)庫(kù)構(gòu)建Go工具鏈痕鳍,而這可以在使用stdlib軟件包的Cgo-enabled版本時(shí)進(jìn)行交叉編譯硫豆。
Gonative為每個(gè)平臺(tái)下載二進(jìn)制發(fā)行版龙巨,并將它們的庫(kù)復(fù)制到正確的位置。同時(shí)熊响,Gonative設(shè)置正確的mod時(shí)間旨别,以避免不必要的重建。
不幸的是汗茄,Gonative在Windows上仍然未經(jīng)測(cè)試秸弛。此外,也沒(méi)有提供Linux / arm支持洪碳。
8递览、Grapes
Grapes是一種輕量級(jí)的Golang工具,旨在輕松地通過(guò)SSH分發(fā)命令瞳腌。它由Yaron Sumel編寫(xiě)和積極維護(hù)绞铃。
Grapes不久將支持完整的主機(jī)密鑰驗(yàn)證,這是開(kāi)發(fā)人員應(yīng)該注意到的嫂侍。
9儿捧、Gosimple
Golang linter的偉大之處在于它專(zhuān)注于簡(jiǎn)化Go源代碼。Gosimple始終將最新的Go版本作為目標(biāo)挑宠,因此它需要Go 1.6或更高版本菲盾。
如果有新的Go版本,gosimple會(huì)建議最輕松和最簡(jiǎn)單的方法來(lái)避免復(fù)雜的構(gòu)造各淀。
10懒鉴、Go Vendor
Go Vendor是與標(biāo)準(zhǔn)Vendor文件夾兼容的Golang工具。它允許開(kāi)發(fā)人員通過(guò)govendor add / update從$GOPATH中復(fù)制現(xiàn)有的依賴(lài)關(guān)系揪阿。你還可以通過(guò)govendor fetch直接提取新的依賴(lài)關(guān)系或更新現(xiàn)有的依賴(lài)關(guān)系疗我,以及使用govendor遷移來(lái)移動(dòng)舊的系統(tǒng)咆畏。
總結(jié)
如果你有JS / Node背景南捂,那么你還需要學(xué)習(xí)一些新的編程概念,如協(xié)同程序旧找,通道溺健,嚴(yán)格的類(lèi)型與編譯,接口钮蛛,結(jié)構(gòu)鞭缭,指針和其他一些差異。但是魏颓,一旦你進(jìn)入狀態(tài)岭辣,你會(huì)發(fā)現(xiàn)Golang用起來(lái)更容易,也更快甸饱。