Node.js 是什麼?(一次搞懂)
// 一句話回答
Node.js 是一個「讓 JavaScript 這個程式語言,能在瀏覽器以外(電腦、伺服器)執行」的環境。原本 JavaScript 只能在網頁裡跑,有了 Node.js,工程師就能用同一種語言寫後端伺服器、工具與自動化程式。它免費、開放原始碼,是目前最主流的後端環境之一。
先認識 JavaScript
要懂 Node.js,先懂它服務的語言。JavaScript 是一種「程式語言」——寫網頁互動效果(按鈕、動畫、表單驗證)最常用的語言,你逛的每個網站幾乎都有它。
但 JavaScript 一開始只能在「瀏覽器裡」跑,也就是只能做「使用者看得到的那一面」。它出不了瀏覽器,碰不到電腦本身。
Node.js 解決了什麼
Node.js 做的事,就是「把 JavaScript 帶出瀏覽器」——讓它能在你的電腦、或在伺服器(放在機房、24 小時提供服務的電腦)上直接執行。
你可以把 Node.js 想成一台「引擎」:JavaScript 是燃料,Node.js 這台引擎讓它能在瀏覽器以外的地方發動、做事。有了它,工程師就能用同一種語言,同時寫「使用者看到的畫面」和「背後處理資料的程式」。
前端、後端是什麼?
講 Node.js 常會提到「後端」,順便解釋。一個網站或 App 分兩半:「前端(frontend)」是你看得到、摸得到的畫面(版面、按鈕);「後端(backend)」是你看不到的那一半,負責處理資料、運算、跟資料庫溝通。
Node.js 讓 JavaScript 也能寫「後端」。這就是它的重要性:以前前端、後端常要用不同語言,現在一種語言能通吃,團隊溝通與人力調度都更方便。
對老闆來說,這件事的實際意義是人力彈性:同一個工程師可以支援兩邊,小團隊不必為了前後端各養一組人。這也是很多新創選 Node.js 的原因之一。
版本與「LTS」是什麼意思
安裝 Node.js 時,官網通常會給你兩個選項:一個標著「LTS」,一個標著「Current」或「最新」。這是每個人都會遇到、卻很少人解釋的岔路:
- LTS(Long Term Support,長期支援版):穩定、會持續收到安全性更新一段較長的時間。公司的正式專案請選這個
- Current(最新版):功能最新,但變動較快、支援期較短。適合想嘗鮮的實驗性專案
- 版本會過期:每個版本都有「終止支援日」,過了就不再收到安全性修補。這是很多老專案的隱形風險——不是壞掉,而是漏洞沒人補了
- 專案常會指定版本:你可能看到專案裡寫著要用某個特定版本。裝錯版本是「照教學做卻跑不起來」最常見的原因之一
Node.js 擅長什麼、不擅長什麼
技術選型不是玄學。Node.js 有明確的甜蜜點,也有明確的弱項:
- 擅長:同時服務大量連線。例如聊天室、即時通知、API 服務——這類工作大部分時間在「等待」(等資料庫、等外部服務回應),Node.js 處理這種等待特別有效率
- 擅長:前後端共用一種語言。團隊小、要快速迭代時很划算
- 擅長:生態系豐富。要什麼功能多半有現成套件(見 npm 那篇),開發速度快
- 不擅長:大量數學運算。像影像處理、複雜科學計算這類「一直在算」的工作,Node.js 會卡住,通常會交給別的語言處理
- 不擅長:資料科學與機器學習。這塊的主流工具與函式庫幾乎都在 Python 那邊
給老闆:Node.js 還是 Python,該怎麼判斷
你不需要會寫程式也能參與這個決定。判斷的依據不是「哪個比較潮」,而是這幾件事:
- 你的產品主要在做什麼? 偏網站、API、即時互動 → Node.js 是合理選擇;偏資料分析、AI 模型、自動化腳本 → Python 通常更順
- 你現在/未來找得到什麼人? 在你的城市與預算下,哪一種工程師比較好找、比較便宜,這往往比技術本身更關鍵
- 既有系統是什麼? 除非有很強的理由,否則跟著既有技術棧走,維護成本最低
- 兩個都用也很常見:網站用 Node.js、資料處理用 Python,是很普遍的組合,不必二選一
你會在哪裡碰到它
照技術教學裝環境時,很常看到第一步就是「請先安裝 Node.js」。很多現代網站的後端、開發工具、甚至一些 AI 應用,都是跑在 Node.js 上。
而且只要裝了 Node.js,通常就會一起有 npm(管理套件、安裝別人寫好功能的工具)。所以 Node.js 和 npm 幾乎總是成對出現。
另外一個常見場景是:很多命令列工具本身就是用 Node.js 寫的。所以就算你的專案跟 JavaScript 無關,也可能為了跑某個工具而需要裝 Node.js。
三個最常見的卡關與白話對照
- 「command not found: node」:系統找不到 Node.js。通常是還沒安裝,或安裝後沒有重開終端機視窗
- 「Unsupported engine」或「requires Node version X」:你裝的版本和專案要求的不合。要換到指定版本(工程師常用版本切換工具管理多個版本)
- 「EADDRINUSE: port already in use」:你要用的那個「連接埠」已經被別的程式佔用了。連接埠可以想成「同一台電腦上不同服務的門牌號碼」,兩個服務不能同時用同一個號碼。關掉先前那個沒關乾淨的程式即可
對非工程師的意義
你不用會用 Node.js 開發,但知道它是「讓 JavaScript 在電腦上跑起來的環境」,就能看懂教學裡「安裝 Node.js」在做什麼、跟工程師或外包溝通時不卡在名詞上。
更值得記住的是版本這件事:專案能不能跑、有沒有安全性更新,常常取決於 Node.js 版本。定期問一句「我們用的 Node 版本還在支援期內嗎」,是很低成本、卻很有價值的管理動作。
常見問題
Node.js 跟 JavaScript 是一樣的嗎?
不一樣。JavaScript 是「語言」,Node.js 是「讓這個語言能在瀏覽器外執行的環境」。就像燃料(JavaScript)和引擎(Node.js)的關係。
Node.js 要付費嗎?
不用,Node.js 是免費、開放原始碼(程式碼公開、任何人可自由使用)的。真正會產生費用的是「放它的伺服器」或雲端服務,不是 Node.js 本身。
我一定要懂 Node.js 才能用 AI 嗎?
不用。它只是某些工具的底層環境,一般使用者不會直接碰到。知道它是什麼,是為了看教學與溝通時不卡關。
Node.js 跟 npm 是什麼關係?
npm 是隨 Node.js 一起安裝的套件管理工具,用來下載、管理別人寫好的功能。裝了 Node.js 通常就有 npm,兩者常一起出現。
安裝時該選 LTS 還是最新版?
公司的正式專案一律選 LTS(長期支援版),穩定且安全性更新期較長。最新版適合實驗性質的嘗鮮,不建議用在會賺錢的系統上。
我的專案用了很舊的 Node.js 版本,有問題嗎?
有風險。過了支援期的版本不再收到安全性修補,等於帶著已知漏洞在跑。不會立刻壞掉,但屬於應該排進計畫的技術債。建議請工程師盤點目前版本與支援狀態。