Node.js 與瀏覽器的差異
瀏覽器和 Node.js 都使用 JavaScript 作為其程式語言。但構建在瀏覽器中執行的應用程式與構建 Node.js 應用程式是完全不同的。儘管它們都使用 JavaScript,但一些關鍵差異使得這兩種體驗截然不同。
從廣泛使用 JavaScript 的前端開發者的角度來看,Node.js 應用程式帶來了一個巨大的優勢:可以用同一種語言來編寫所有內容——前端和後端,這非常方便。
你擁有一個巨大的機會,因為我們知道要完全、深入地學習一門程式語言有多難。透過使用同一種語言來完成你在 Web 上的所有工作——無論是在客戶端還是在伺服器上,你都處於一個獨特的優勢地位。
改變的是生態系統。
在瀏覽器中,你大部分時間都在與 DOM 或其他 Web 平臺 API(如 Cookies)進行互動。這些在 Node.js 中當然是不存在的。你沒有 document、window 以及瀏覽器提供的所有其他物件。
而在瀏覽器中,我們沒有 Node.js 透過其模組提供的所有優秀 API,比如檔案系統訪問功能。
另一個很大的區別是,在 Node.js 中,你可以控制環境。除非你正在構建一個任何人可以在任何地方部署的開源應用程式,否則你明確知道應用程式將執行在哪個版本的 Node.js 上。與瀏覽器環境相比,這是一個巨大的便利,因為在瀏覽器環境中你無法選擇訪問者會使用什麼瀏覽器。
這意味著你可以編寫你的 Node.js 版本所支援的所有現代 ES2015+ JavaScript。由於 JavaScript 發展迅速,但瀏覽器升級可能較慢,有時在 Web 上你不得不使用較舊的 JavaScript / ECMAScript 版本。你可以使用 Babel 在將程式碼交付給瀏覽器之前將其轉換為 ES5 相容的程式碼,但在 Node.js 中,你不需要這樣做。
另一個區別是 Node.js 同時支援 CommonJS 和 ES 模組系統(從 Node.js v12 開始),而在瀏覽器中,我們才剛開始看到 ES 模組標準的實現。
在實踐中,這意味著你可以在 Node.js 中同時使用 require() 和 import,而在瀏覽器中你只能使用 import。