Nodejs是一個運行時或者說是一個Javascript代碼運行時的環境,而Golang是一門編程語言但不只僅用於後端開發。Golang是由Google於2007年發明的。Nodejs能讓Javascript代碼運行在服務端上,而Golang適用於服務器端編寫代碼。Nodejs代碼也就是Javascript的代碼,因此繼承了大量的Javascript特性。Javascript在當下是如此的流行,以致於ECMAScript標準主要是改進性地前行而不是顛覆性地進行。Golang能夠被認爲是從c/c++這些更保守的語言上的進化。Golang核心結構的創建是在C和Python的基本準則之上的。node
咱們接下來會對比一下Golang與Nodejs的優缺點,從而讓你更好地選擇在接下來的工做裏面該選誰。linux
Golang:與c/c++差很少的性能特性,能夠說是很是出色了。c++
Nodejs:若是從原始性能上來講,Golang和Nodejs比較是相對公平的。 原始性能即CPU沒有額外的負荷,Golang和Nodejs在這方面都相對展現相對使人滿意的效果,可是Golang在實際運行性能可能會更好,由於服務端運行時候的性能都各類因素的影響。golang
Golang:Golang使用一種併發模型叫「Goruntinues」。Goruntinues容許多個協程同時運行,輕鬆靠譜地完成併發任務。web
Nodejs:Nodejs是單線程的,意味着執行任務是順序執行的。在大規模擴展的同時須要處理多個並行任務在同一時間可能會出現一些致命的弱點。Javascript容許利用事件回調的方式來處理併發,但這種方式並非足夠的高效。編程
Golang: go version go1.10 linux/amd64後端
Node js :- v9.4.0安全
在比較了Golang與Nodejs各個方面之後,其實咱們很難去說誰比誰更加出色,他們都有各自的閃光點以及缺點。在性能方面來講,Golang彷佛比Nodejs更加可靠,但同時你也應該從項目大小,項目結構,以及業務類型等各類方面去比較做出考量。服務器
這部份內容並非原文全部,本文翻譯的內容並不表明我本身的觀點,只是這篇原文在Medium上比較熱門因此我翻譯了過來能夠供你們討論。我自己是一個Nodejs以及前端的開發者超過3年了,最近在用Golang練習一些後端的項目也斷斷續續有幾個月了。我很是喜歡Nodejs/Javascript的靈活性,雖然這也是被許多人詬病的地方。另外是這篇裏面說到的併發比較只是簡單說了Js的回調而沒有提到事件循環,雖然Nodejs是單線程但正是有了事件循環,因此其在處理併發上也是足夠高效的。但另外一方面,Golang的Go rutines設計配合channel在併發狀況性能確實很是高效,而正由於其不是單線程的特性,因此還會引伸出共享資源競爭以及併發安全的問題,迫使我本身要去關注和處理以及考慮更多的狀況在實際使用中,也能夠所以接觸到更多操做系統或者是更加底層的知識和概念,而不是簡單的CRUD。我以爲Nodejs和Golang都有其各自的閃光點。個人建議是,若是你是一位Nodejs的後端工程師,但願另外再接觸學習一門靜態語言,但願更加底層地處理和熟悉高併發場景的話,我認爲Golang是一個很是不錯的選擇。