我為什麼不從NodeJS切換到Go
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 == 真的很牛逼。
相關文章
- 為什麼Discord從Go切換到Rust?GoRust
- 為什麼我們從Yarn切換到pnpmYarnNPM
- 為什麼我們從RabbitMQ切換到apache kafka?MQApacheKafka
- 為什麼我們從Webpack切換到Vite - ReplitWebVite
- 為什麼我從Java切換到Rust? Opensource.comJavaRust
- 從NodeJS切換到Ruby on Rails - nikodunkNodeJSAI
- 我為什麼從php轉go?PHPGo
- 我為什麼會從程式不喜歡加{}到加{}
- 為什麼應該切換到實時渲染
- 為什麼我從 Mac 換到了 LinuxMacLinux
- 我將從VS Code切換到VS Codium
- 為什麼我從 npm 到 yarn 再到 npm?NPMYarn
- 為什麼我不用ViewPager或RecyclerView來做上下滑切換Viewpager
- 我為什麼不推薦使用BeanUtils屬性轉換工具Bean
- 如何從 Docker Desktop 切換到 ColimaDocker
- 為什麼 Go 不支援 []T 轉換為 []interfaceGo
- 從爬⾏到奔跑 - 我們為什麼需要單元測試?
- 從 HTTP 切換到 HTTPS,這下我的技術部落格安全了吧?HTTP
- Android逆向之路—為什麼從後臺切換回app又顯示廣告了AndroidAPP
- 從Oracle到MongoDB:為什麼AWS不斷拋棄合作伙伴?OracleMongoDB
- 在 Go 語言中,我為什麼使用介面Go
- kvm切換器是什麼?
- ABP VNext從單體切換到微服務微服務
- 使用nvm解決nodejs版本切換NodeJS
- windows/linux下nvm管理nodeJS切換WindowsLinuxNodeJS
- 系統呼叫時為什麼發生任務切換?
- 從AIGC到AGI,為什麼我們需要更多的“技術信仰派”?AIGC
- 為什麼特斯拉永遠不會做換電?
- 為什麼我從 Google 辭職而為自己工作Go
- 我的遊戲這麼好玩,為什麼賣不動?遊戲
- 我為什麼要升級到Ionic3
- Redis主從切換Redis
- 實戰:如何優雅的從 Skywalking 切換到 OpenTelemetry
- 178-ABP VNext從單體切換到微服務微服務
- Linux核心態是什麼?使用者態如何切換到核心態?Linux
- 將Debian從Legacy切換為UEFI啟動模式模式
- 一個月後,我們又從 MySQL 雙主切換成了主 - 從!MySql
- [譯] 我們能從 Redux 原始碼中學到什麼?Redux原始碼
- 天啦,從Mongo到ClickHouse我到底經歷了什麼?Go