我為什麼不從NodeJS切換到Go

ourjs發表於2014-03-31

  2014年3月26日

  我最近研究並玩了一下Go語言,並且我想簡短地談一下為什麼我不準備從Node切換到GO。(並且我建議你也不要這麼幹)

  首先,人們在討論Node.js時會有很多的抱怨:

  回撥地獄

  Promises,  它使程式碼讀起來像同步的一樣,並且如果你按照合理的標準縮排,在99%的情況下,你不會遇到回撥的問題。

  Javascript語法很噁心

  Javascript擁有完美的可讀性,CoffeeScript的更佳。你需要做的僅是成為一名好的程式設計師,你懂的。

  CoffeeScript npm 模組

  例如,我還看到只暴露CoffeeScript的模組。它可能是用CoffeeScript寫的,但是每一個CS模組都最終在模組系統中編繹成了JavaScript。

  Server/Client 之間從來沒有被重用過

  這當然是對的。除非你不考慮像Moment(分析),FormWarden(驗證)這些庫,我發現我很少從客戶端向伺服器端拷貝程式碼。但是沒有切換的東西是很美的,尤其是兩個C風格的語言,像Go和JavaScript.

  我很高興我御下了那些負擔。

  我為什麼愛Node.js(和Javascript)

  JavaScript一直是我最喜歡的語言,我已經用了好多年了,下面是原因:

  她的靈活,我的意思是她能解決我日常開發所遇到的任何問題。通俗一點講,在大多數情況下我都不會碰到效能瓶頸;如果一個問題出現了,我可以全心全意解決它。我發現靜態型別非常繁瑣,因為我的工作需要我快速開發原型(然後擴充套件成複雜的系統)[1],我選擇一種可以讓我有這種能力的語言和環境。

  當然,下一個關鍵點是,有大量的基於Node的開發工具。Bower解決前端依賴非常有效,如果你用過的話。我自己是Foundation/SCSS的粉絲,但是我們在工作中使用Bootstrap/LESS,並且LESS是由Javascript編繹的。gulp為我的開發提供了一套完美的編繹系統。並能毫不費力的整合到線上,所以在改變樣式後,我可以直接看到瀏覽器的變化(僅需要設定兩步監視)。同樣,我的伺服器端程式碼也可以被重新載入,多虧了JS的功能,這樣我就不用每打一段就重新編繹一次了。它已經重啟了,我僅需使用F5去測試我的改動。[2]

  我為什麼不想換

  到目前我可以找到的原因,切換到(Go, Ruby, Python, Erlang, 其他等等),我不得不:

  放棄那些非常牛逼的全棧工具(這對於我來說不可接受)。

  在前後端切換不同的語言(客戶端JS, 伺服器端Go),還有一些JS的工具(聽起來就很無聊)。

  如果我錯了的話,關於Go語言的生態系統是可以支承全棧開發的,我非常樂意有人能夠指出。我明白我可以使用Go版的Bower,但是我還是需要Node去使用它,這是一個非常大的二次依賴。如果有5位以上的開發者的話,這個問題就會暴露出來。

  我現在還沒有看到切換的價值。我想說,我現在積極地學習Go是因為我覺得現在還沒有什麼意義,Go有足夠的魅力強勢一段時間(也許會持續下去)。

  [1] 我在一家代理(廣告)公司工作所以我的日常工作跟你的可能有所不同。

  [2] Jasmine + CoffeeScript == 真的很牛逼。

  原文: notduncansmith.github.io

相關文章