我為什么不從NodeJS切換到Go
英文原文:Why I Won't Switch To Go (from Node.js)
我最近研究并玩了一下 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 == 真的很牛逼。
<span id="shareA4" class="fl"> </span>