试用 Node.js

已完成

在本单元中,你将创建并运行一个 Node.js 脚本。

在浏览器中启动开发容器

提供开发容器环境,其中包含完成此项目中每个练习所需的所有依赖项。 可以使用浏览器在 GitHub Codespaces 中运行开发容器,也可以使用 Visual Studio Code 在本地运行。

GitHub Codespaces 运行由 GitHub 托管的开发容器,将 Visual Studio Code 网页版作为用户界面。 如需最直接的开发环境,请使用 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 中打开新终端。

    提示

    可以使用主菜单导航到“终端”菜单选项,然后选择“新建终端”选项。

    用于打开新终端的 codespaces 菜单选项的屏幕截图。

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. 在新文件夹中创建名为“index.js”的文件。

  3. 将以下代码复制到“index.js”文件中

    console.log('Hello World, from a script file.');
    
  4. 右键单击文件夹名称,然后选择“在集成终端中打开”,打开终端中的新文件夹。

  5. 在终端中,输入 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 请求:

    const https = require('https');
    
    console.log(`start`);
    
    try{
        const res = await https.get('https://nodejs.org/dist/index.json');
    
        console.log(res.statusCode);
    } catch( error ){
        console.log(error);
    }
    
    console.log(`end`);
    

    https.get 方法向 Node.js 网站发出 HTTP 请求并返回响应。 get 方法采用两个参数:要请求的 URL,以及接收响应时调用的回调函数。 回调函数采用单个参数 res,即响应对象。

  2. 重新运行应用程序:

    node index.js
    
  3. 控制台日志的顺序如下:

    start
    end
    200
    

在输出中,可以看到事件循环的运作方式。 调用 HTTP 方法并将其放入任务队列,同时等待它返回。 事件循环提取下一个任务,即 console.log 方法。

停止开发容器

删除 GitHub Codespaces 环境可确保可以最大程度地提高帐户获得的每核心免费小时数权利。

重要

有关 GitHub 帐户权利的详细信息,请参阅 GitHub Codespaces 每月包含的存储和核心小时数

  1. 登录到 GitHub Codespaces 仪表板 (https://github.com/codespaces)。

  2. 找到当前正在运行的、源自 MicrosoftDocs/node-essentials GitHub 存储库的 Codespaces。

    所有正在运行的 Codespaces 的屏幕截图,其中包含它们的状态和模板。

  3. 打开 codespace 的上下文菜单,然后选择“删除”。

    单个 codespace 的上下文菜单的屏幕截图,突出显示了删除选项。