第 1 週 · HTTP 基礎與第一個 Worker
Node.js、npm、終端機基本操作
在自己的電腦上用終端機跑一支 JavaScript,並看懂 package.json。
正在打開這一關…
學習目標
- 知道 Node.js 是在電腦上跑 JavaScript 的環境
- 會用終端機進出資料夾、看檔案、跑 npm 指令
- 說得出依賴套件為什麼要寫進 package.json,而不是只存在你的電腦
瀏覽器裡的 JavaScript 活在網頁裡。Node.js 讓同一種語言在你的終端機裡跑,用來啟動工具、安裝套件、開發 Worker。今天的目標不是變成終端機高手,是敢在黑底白字裡走路。
用生活例子理解
- 終端機是一扇用文字開門的櫃台。你打一行指令,系統做一件事。
- Node.js是另一間可以跑 JavaScript 的房間。瀏覽器是客廳,Node 是工作室。
- npm是工作室的工具店。
package.json是購物清單。別人拿到清單,就能買到同一組工具。 - 套件是別人寫好的工具。Workers 的開發工具 Wrangler 就是一個套件。
生活比喻:你不會把整間五金行搬去工地。你帶一張清單(
package.json與鎖定版本的 lock 檔)。同事照清單買,工具就對得起來。
路徑先記三個動作:
| 指令 | 做什麼 |
|---|---|
pwd |
我現在在哪個資料夾 |
ls |
這裡有哪些檔案 |
cd 資料夾 |
走進去。cd .. 是回上一層 |
動手做
大約 25 分鐘。請先安裝 Node.js 22(與這門課的網站相同)。裝好後,終端機輸入 node -v,應看到 v22 開頭。
- 建一個練習資料夾並走進去:
mkdir node-hello
cd node-hello- 產生清單。一路按 Enter 用預設值即可:
npm init -y- 打開剛出現的
package.json。你會看到name與"type"可能還沒有。先不用改。 - 新增
hello.js,內容用下面案例。 - 執行
node hello.js。終端機應印出一句中文。 - 再執行
npm install cowsay,看清單裡多了dependencies,資料夾多了node_modules。 - 這個套件只是好玩。看完就知道:安裝會改
package.json,真正的檔案在node_modules,不要手改那一層。
Windows 的 PowerShell 同樣可以用 cd 與 mkdir。列出檔案是 dir 或 ls。
案例
const tool = "Node.js";
// 這支檔案由 node hello.js 執行,不是由瀏覽器打開。
console.log(`哈囉,我在 ${tool} 裡跑`);
const note = { course: "後端闖關", day: 3 };
console.log(JSON.stringify(note));{
"name": "node-hello",
"private": true,
"type": "module",
"scripts": {
"start": "node hello.js"
}
}"type": "module" 表示這個資料夾裡的 JavaScript 用 import / export,跟你在前端寫的 ES Module 同一套。今天的 hello.js 還沒有匯出東西,所以兩種都能跑。從明天的 Worker 開始,我們固定用模組寫法。
裝好之後可以用清單上的腳本:
npm startnpm start 會去跑 scripts.start。你不需要記住 node 的完整路徑。
常見錯誤
- 在錯誤的資料夾執行指令。先
pwd,確認自己在專案裡。 - 把
node_modules上傳到 Git。那一層又大又能用清單重裝。這門課的.gitignore已排除它。 - 以為裝了 Node 就等於有伺服器。Node 能跑 JavaScript,但對外的網站還要你寫「收到請求時要回什麼」。那是明天的 Worker。
- 把終端機的錯誤當成失敗的人格。第一行通常寫著找不到檔案或指令。讀那一行就好。
自我檢查
- 瀏覽器裡的 JavaScript 與 Node.js 裡的 JavaScript,環境差在哪?
package.json與node_modules各是什麼?為什麼只要分享清單?- 你今天用了哪三個終端機動作?
pwd、ls、cd各做什麼?