亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

從Node.js 轉到 Go平臺

2020-04-01 19:14:50
字體:
來源:轉載
供稿:網友
回顧過去的一年,我們在技術棧上的最大改變就是從 Node.js 切換到 Go 。我們的聯合創始人,Steve Kaliski, 在 Poptip 把 Node.js 切換成了 Go,可惜他沒有學習到當時的教訓。
 

在用 Node.js 建立了 Bowery 的第一個迭代版本后,我們在2014年2月切換到了 Go,我們的開發和部署速度也因此得到提升。

從那以后,我們整個團隊都變成了專職的地鼠(譯者注:Go 的吉祥物)。Go 清晰明確的標準和更簡便的工作流程讓我們用 Go 用得很舒服。下面是我們熱愛用 Go 進行工作的原因,你可以從中瞄一眼我們的地鼠洞。

容易編寫跨平臺代碼

我們切換成 Go 的其中一個最大原因就是它是那么容易去為不同系統編譯代碼。

在 Bowery, 我們在建立一個能幫忙你和你的團隊管理你們的開發環境的app,我們必須要高效地支持所有操作系統——Linux,Windows 還有 OSX。在Go中,你可以為不同的操作系統定義不同的文件,從而實現依賴于操作系統的功能。一個絕佳的例子就是我們的同伴 Larz 在構建一個從命令行讀取用戶輸入的包 Prompt 的事。Larz 希望去創建一個 Go 包用來實現跨平臺的行編輯提示。這在 Go 中是如此簡單:為每個操作系統創建不同的文件,Go 編譯器會根據操作系統來選擇應使用的文件來生成最終內容。

為其他的系統編譯代碼同樣很簡單,你要做的僅僅是設置一個環境變量,然后你就有了一個你在 Linux 系統上編譯的 Windows 二進制文件。

更快的部署

Go 是一款編譯型語言并且可以更輕松地在多個平臺上分發應用。 對我們而言,部署和測試是很重要的,同時也是我們最終用戶的一個資產。通過 Go,構建服務然后運行測試會很容易,因為遷移到生產環境的服務器時就準備好了。 Go 不需要任何的系統依賴,讓它的發布真的很簡單。 當要發布命令行工具或者其它應用時,我們的用戶不需要擔心要安裝Java,RVM或者NPM才能運行。 我們喜歡這篇Jeremy Saenz 的文章,他討論了為什么他把他所有的命令行工具遷移到Go(CLI tools to Go)。

并發基元
當切換到Go時我們意識到Node.js的事件循環并不是一切。Node.js 沒有提供太多的并發基元。唯一能同時運行的是I/O程序和定時器等。你無法通過這些程序通訊,所以用Node.js建立一個敏捷的系統是一個挑戰。使用Go,你可以在運行任意并程序的同時,提供一個頻道去給程序發送信號讓它做一些事情,或者給它們發送一些值來共享數據。Go還提供了像 mutexes, wait groups等低級別的并發基元 。 有的你可能在NPM上找到,但我們發現在處理并發和并行時頻道是決定性因素。

集成測試框架

用Node.js的時候,我們已經有了我們的測試框架選擇,但一些框架對于前端來說更好用,比如Jasmine, 其它的框架則對后端來說更好用,比如Mocha。也有其它的選擇像JSUnit和PhantomJS,如果你看過StackOverflow的這篇文章,那里也有人推薦許多的框架。在一些世界里,選擇是一件好事,但使用Go的時候,我們喜歡測試框架的規范化。在Go里,所有的測試包都是內置的。如果你需要寫一個新的測試套件,你必須做就是把(文件名)_test.go文件加到你要測試的軟件的同一個包里,它將會在你每次執行go test的時候運行。
你可以在writing tests with Go學到更多關于Go 測試的知識。 需要測試HTTP services? Go同樣提供了httptest包

標準庫

我們喜歡僅用Go的標準庫就能寫大多數的軟件。用Node.js時,我們幾乎都是不得不引入一個外部的庫, 這樣做既增加了部署的時間,也增加了來自第三方軟件的潛在隱患。只用標準庫能讓我們寫的代碼更快更安全。

開發者用的工作流工具更強大

Node.js除了NPM的包和腳本控件,沒有真正的標準化的工作流。除此之外, 因為這些工具是社區創造的,雖然很好用但是實在太多了,以至于最終的結果就是事情被每個人以不同的方式完成了。在Go里工作流標準化的一個很好的例子就是工作區的布局。你要放棄很多開發自由因為你必須遵守工作區的布局,不過它提供了大量的結構:你可以保留你的Go源碼和依賴在同一個位置。在你的工作區你有3個根目錄: src 放源碼包,pkg放編譯過的包,bin放可執行的程序。讓你的源碼和依賴放在一個單獨的工作區是一個最佳實踐, 讓它在每個人的機器上都是這個標準。在團隊合作里這些可預測性是讓人滿意的。我們可以去任何人的機子上提供幫助,并且知道我們的代碼將會出現在$GOPATH/src/github.com/Bowery這個路徑,而不是其它像$HOME/some/path/to/Bowery這樣的路徑。類似的,gofmt用同樣的方式格式化每個人的代碼。對于一些膚淺的問題,像組織代碼和代碼風格差異在Go里根本不需要擔心,這是一個大大的解放。你可以專注修復你的問題,其它的事都被考慮到了。

還有一大堆其它的原因去喜歡Go,我們看到越來越多的公司采用Go讓內部應用變得更強大并且是可分布式的。但總的來說,Go團隊發現如果你創造標準并弄成范例讓別人同意的話,開發者們會更高產。 比如, MongoDB 的應用管理團隊喜歡用Go的"明智的、 統一的開發經驗"。 在 Soundcloud,他們喜歡用Go嚴格的格式化代碼規則和“實現的方式只有一種”的哲學。這意味著你會在代碼審查和爭論代碼風格和格式上花很少的時間,而可以用更多的時間去解決你問題的根源。

如果你剛開始使用Go并且想了解更多,這里有一些資源可以看看。

閱讀Golang 官方博客的更新和核心團隊的公告 
閱讀核心團隊提供在官網的學習文檔
我們喜歡Ardan工作室的Bill Kennedy寫在博客 Going Go Programming 上的竅門和指南
Go by Example 有一堆用Go寫的不同任務的例子
GopherAcademy 有很多關于Go的最佳實踐的文章
Brian McCallister 有一篇很好的文章是 Go 工作區和總體開發環境
更多關于Go的代碼組織,閱讀Jared Carroll發布在 Pivotal Labs blog 的文章
如果要開始你的第一個Go項目,設置你的新環境并在Bowery分享給你的團隊吧。

請您花一點時間將文章分享給您的朋友或者留下評論。我們將會由衷感謝您的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频免费观看| 97精品国产91久久久久久| 亚洲国产成人精品久久| 高清亚洲成在人网站天堂| 26uuu国产精品视频| 亚洲一区二区国产| 91久久久精品| 高清一区二区三区日本久| 韩国美女主播一区| 日韩av在线免费观看一区| 亚洲人成网站999久久久综合| 欧美老少配视频| 欧美精品在线播放| 91精品国产自产在线观看永久| 97国产精品视频人人做人人爱| 久久精品成人欧美大片| 国产精品极品尤物在线观看| 精品久久久久久亚洲国产300| 色婷婷av一区二区三区在线观看| 91黑丝在线观看| 中文日韩在线视频| 日韩欧美中文字幕在线播放| 亚洲欧美中文在线视频| 亚洲xxxxx| 亚洲国产精品一区二区久| 中文字幕视频一区二区在线有码| 日韩美女在线观看一区| 亚洲第一网站免费视频| 69国产精品成人在线播放| 久久国产精品首页| 亚洲色图综合久久| 久久久人成影片一区二区三区观看| 精品国产一区二区在线| 国语自产精品视频在线看抢先版图片| 一区二区亚洲欧洲国产日韩| 一区二区三区在线播放欧美| 国产ts一区二区| 欧美成人剧情片在线观看| 亚洲一级免费视频| 日韩中文第一页| 欧美成人精品h版在线观看| 欧美激情在线观看视频| 精品毛片三在线观看| 国产精品精品久久久| 日韩欧美国产免费播放| 亚洲美女av在线播放| 久久久久久久一区二区| 日韩精品小视频| 国产精品久久久久久久久久久久久| 亚洲一级免费视频| 欧美午夜片欧美片在线观看| 一区二区欧美亚洲| 国产精品久久久久久久天堂| 亚洲国产成人av在线| 亚洲精品小视频在线观看| 日韩在线播放视频| 91久久精品国产91久久| 亚洲精品在线看| 按摩亚洲人久久| 欧美激情亚洲一区| 亚洲小视频在线观看| 国产成人在线亚洲欧美| 亚洲欧美另类人妖| 精品久久久久久久久久ntr影视| 亚洲一区二区在线播放| 97人人模人人爽人人喊中文字| 亚洲国产成人在线播放| 色综合久久精品亚洲国产| 国产中文日韩欧美| 色多多国产成人永久免费网站| 欧美一区二区.| 日本三级韩国三级久久| 欧美在线视频免费| 亚洲欧美日韩中文视频| 久久久国产精品免费| 久久久久久噜噜噜久久久精品| 亚洲福利视频在线| 国产精品尤物福利片在线观看| 69国产精品成人在线播放| 日韩激情在线视频| 亚洲欧美在线一区二区| 国产亚洲欧美aaaa| 欧美专区日韩视频| 欧美电影在线观看完整版| 91午夜理伦私人影院| 国产91精品久久久久| 最新国产成人av网站网址麻豆| 亚洲精品97久久| 亚洲人线精品午夜| 91精品国产免费久久久久久| www.日本久久久久com.| 一区二区三区视频免费在线观看| 欧美午夜片在线免费观看| 亚洲高清免费观看高清完整版| 国产精品999| 欧美激情视频播放| 亚洲欧美国产精品久久久久久久| 亚洲欧洲午夜一线一品| 亚洲成人黄色网址| 疯狂欧美牲乱大交777| 国产精品成av人在线视午夜片| 国产一区二区三区四区福利| 国产精品久久久久免费a∨| 日韩中文视频免费在线观看| 亚洲国产成人久久综合一区| 欧美日韩综合视频| 日本精品一区二区三区在线| 日韩欧美成人精品| 亚洲国产精品人久久电影| 色婷婷综合久久久久中文字幕1| 欧美一级bbbbb性bbbb喷潮片| 日韩视频在线免费观看| 国产精品久久久久久久美男| 国产91色在线播放| 久久久久久国产三级电影| 欧美视频专区一二在线观看| 国产精品啪视频| 精品国产福利在线| 91香蕉嫩草神马影院在线观看| 国产综合在线视频| 国产一区二区三区在线看| 久久精品国产精品亚洲| 91系列在线观看| 亚洲视频在线观看| 国产专区精品视频| 国产精品成人av性教育| 欧美日韩免费在线| 国产欧美精品一区二区三区介绍| 国产一区二区日韩精品欧美精品| 亚洲精品自拍偷拍| 久久影视电视剧免费网站| 亚洲美女免费精品视频在线观看| 久久香蕉国产线看观看网| 亚洲淫片在线视频| 国产精品成人v| 成人激情视频在线| 欧美色道久久88综合亚洲精品| 日韩电影中文字幕一区| 96sao精品视频在线观看| 亚洲午夜国产成人av电影男同| 久久精品国产亚洲精品| 中文字幕欧美视频在线| 97在线日本国产| 91亚洲人电影| 亚洲精品国产suv| 欧美高清不卡在线| 8x拔播拔播x8国产精品| 亚洲欧美精品中文字幕在线| 精品亚洲永久免费精品| 国产欧美亚洲精品| 国产一区二区三区在线播放免费观看| 欧美日韩亚洲视频一区| 成人久久一区二区三区| 国产中文字幕日韩| 午夜精品国产精品大乳美女| 一区二区欧美在线| www亚洲欧美| 久久人人爽国产| 欧美性受xxx| 欧美性猛交xxxx乱大交| 久久久久久久久久久网站| 国内偷自视频区视频综合| 精品小视频在线| 综合国产在线观看|