試用 Node.js

已完成

在此單元中,您會建立並執行 Node.js 指令碼。

在瀏覽器中開始您的開發容器

開發容器環境可供完成此專案中每個練習所需的所有相依性使用。 您可以在瀏覽器中的 GitHub Codespaces 中執行開發容器,或使用 Visual Studio Code 在本機執行。

GitHub Codespaces 會使用網頁版 Visual Studio Code 作爲使用者介面,執行由 GitHub 管理的開發容器。 針對最直接的開發環境,請使用 GitHub Codespaces,讓您已預先安裝正確的開發人員工具和相依性來完成此訓練課程模組。

重要

所有 GitHub 帳戶每個月最多可以使用 Codespaces 60 小時,且有 2 個核心執行個體。 如需詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

  1. 開始在 MicrosoftDocs/node-essentials GitHub 存放庫分的 main 分支上建立新的 GitHub Codespace 的流程。

  2. 在 [建立 Codespace] 頁面上,檢閱 Codespace 組態設定,然後選取 [建立 Codespace]

    建立新 Codespace 之前確認畫面的螢幕擷取畫面。

  3. 等候 Codespace 開始。 此啟動程序可能需要幾分鐘的時間。

  4. 在 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 也支援從檔案執行程式碼。

  1. 在開發容器中建立名為 hello-world 的新資料夾。

  2. 以滑鼠右鍵按一下資料夾名稱,然後選取 [在整合式終端機中開啟],以開啟終端機中的新資料夾。

  3. 在終端機中,初始化節點專案。

    npm init -y
    
  4. 安裝 Node 套件 node-fetch 以發出非同步 HTTP 要求。

    npm install node-fetch
    
  5. 開啟 package.json 檔案,並新增下列屬性以允許最上層 async/await。

    "type":"module",
    
  6. 在新資料夾中建立名為 index.js 的檔案。

  7. 將下列程式碼複製至 index.js 檔案:

    console.log('Hello World, from a script file.');
    
  8. 在終端機中,輸入 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 資料來源,然後將其顯示。

  1. 將下列程式碼新增至 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,這是回應物件。

  2. 重新執行應用程式:

    node index.js
    
  3. 主控台記錄的順序如下:

    start
    statusCode: 200
    end
    

從輸出中,您可以看到事件迴圈的運作情形。 呼叫 HTTP 方法並放入工作佇列中,等待它傳回。 事件迴圈會採用下一個工作,也就是 console.log 方法。

停止您的開發容器

刪除 GitHub Codespaces 環境,可確保您可將您為帳戶取得的每個核心免費時數權利數量最大化。

重要

如需 GitHub 帳戶權利的詳細資訊,請參閱 GitHub Codespaces 每月包含的儲存體和核心時數

  1. 登入 GitHub Codespaces 儀表板 (https://github.com/codespaces)。

  2. 找出您目前執行中的 Codespaces,而其來源為 MicrosoftDocs/node-essentials GitHub 存放庫。

    執行中 Codespaces 的螢幕擷取畫面,包括其狀態和範本。

  3. 開啟 Codespace 的操作功能表,然後選取 [刪除]。

    單一 Codespace 的操作功能表 (已醒目提示刪除選項) 螢幕擷取畫面。