試用 Node.js
在此單元中,您會建立並執行 Node.js 指令碼。
在瀏覽器中開始您的開發容器
開發容器環境可供完成此專案中每個練習所需的所有相依性使用。 您可以在瀏覽器中的 GitHub Codespaces 中執行開發容器,或使用 Visual Studio Code 在本機執行。
GitHub Codespaces 會使用網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 針對最直接的開發環境,請使用 GitHub Codespaces,讓您已預先安裝正確的開發人員工具和相依性來完成此訓練課程模組。
重要
所有 GitHub 帳戶每個月最多可以使用 Codespaces 60 小時,且有 2 個核心執行個體。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數。
開始在
MicrosoftDocs/node-essentials
GitHub 存放庫分的main
分支上建立新的 GitHub Codespace 的流程。在 [建立 Codespace] 頁面上,檢閱 Codespace 組態設定,然後選取 [建立 Codespace]
等候 Codespace 開始。 此啟動程序可能需要幾分鐘的時間。
在 Codespace 中開啟新的終端機。
Node.js REPL
Node.js 內建的「讀取、求值、輸出」迴圈 (REPL) 模式,非常適合快速評估與實驗程式碼。 REPL 模式為互動式主控台環境,可讓您輸入 JavaScript 程式碼、讓 Node.js 解譯並執行程式碼,然後列印輸出。
Node.js REPL 模式的運作方式如下:
- 讀取:讀取及剖析使用者的 JavaScript 程式碼輸入 (或在程式碼無效時顯示錯誤)。
- 求值:評估輸入的 JavaScript 程式碼。
- 輸出:印出計算後的結果。
- 迴圈:執行迴圈及等待使用者輸入新的命令 (或在使用者輸入兩次 ctrl-c 時結束)。
若要啟動 REPL 模式,請在開發容器的終端機中執行 node
程式。
注意
使用滑鼠右鍵按一下 [貼上]>,以在 REPL 主控台中輸入複製的命令。
node
即會開啟 REPL 環境。 您應會看到 REPL 提示:
>
在 REPL 主控台中輸入下列程式碼, (以滑鼠右鍵按一下 >[貼上]):
console.log('Hello World, from the REPL.')
此程式碼將在 REPL 主控台中列印「Hello World, from the REPL.」訊息:
Hello World, from the REPL.
若要結束 REPL 主控台,請按 Ctrl + C 兩次。
建立 Node.js 指令碼
Node.js 也支援從檔案執行程式碼。
在開發容器中建立名為 hello-world 的新資料夾。
以滑鼠右鍵按一下資料夾名稱,然後選取 [在整合式終端機中開啟],以開啟終端機中的新資料夾。
在終端機中,初始化節點專案。
npm init -y
安裝 Node 套件
node-fetch
以發出非同步 HTTP 要求。npm install node-fetch
開啟
package.json
檔案,並新增下列屬性以允許最上層 async/await。"type":"module",
在新資料夾中建立名為 index.js 的檔案。
將下列程式碼複製至 index.js 檔案:
console.log('Hello World, from a script file.');
在終端機中,輸入
node
命令,後面接著檔案名稱 index.js:node index.js
您應該會看見下列輸出:
Hello World, from a script file.
您現在已執行第一個 Node.js JavaScript 程式碼。
- 問題:Console.log 是同步或非同步?
- 回答:
console.log
方法會出現在開發中立即執行,因此會假設為非同步。 此方法不保證非同步行為,因此必須將其視為同步。 因為程式碼執行可能封鎖到console.log
方法完成為止,因此請小心不要在生產環境中保留程式代碼中的console.log
陳述式。
新增最上層非同步函式
下列最上層級的非同步程式碼會要求 HTTP JSON 資料來源,然後將其顯示。
將下列程式碼新增至
index.js
檔案,以建立異步 HTTP 要求:import fetch from 'node-fetch'; console.log(`start`); try { const res = await fetch('https://github.com/MicrosoftDocs/node-essentials'); console.log('statusCode:', res.status); } catch (error) { console.log(`error: ${error}`); } console.log(`end`);
https.get
方法會向 Node.js 網站提出 HTTP 要求,並傳迴響應。get
方法會採用兩個參數: 要求 URL,以及收到回應時所呼叫的回呼函式。 回呼函式會採用單一參數res
,這是回應物件。重新執行應用程式:
node index.js
主控台記錄的順序如下:
start statusCode: 200 end
從輸出中,您可以看到事件迴圈的運作情形。 呼叫 HTTP 方法並放入工作佇列中,等待它傳回。 事件迴圈會採用下一個工作,也就是 console.log 方法。
停止您的開發容器
刪除 GitHub Codespaces 環境,可確保您可將您為帳戶取得的每個核心免費時數權利數量最大化。
重要
如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數。
登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。
找出您目前執行中的 Codespaces,而其來源為
MicrosoftDocs/node-essentials
GitHub 存放庫。開啟 Codespace 的操作功能表,然後選取 [刪除]。