Logo
Section 1 / 8

输入

了解 Node.js 中的各种输入方法。

导入

输入

了解 Node.js 中的各种输入方法。

命令行输入

我们从最基础的输入形式——命令行输入开始。根据你使用终端的熟悉程度,你可能已经了解如何通过终端向程序传递输入,也可能还不太清楚。让我们先来看看具体怎么做。

假设我们有一个名为 app.js 的简单程序。这个程序会打印出你传入的任何内容。你只需在终端中程序名称后添加参数即可传递这些参数。尝试运行命令 node app.js Hello。点击 RUN 按钮开始体验。

No configuration found for ID: 495862b406df357005a5784810170314d8d3507d8b6b4346694afd9d5c1ff3f1

在这个简单示例中,只有一行代码。你可能还记得在第一课中的 console.log。console 是一个非常灵活的模块,我们将在后续章节中深入探讨。而当前我们要重点关注的是 process 模块,特别是 process.argv。你可能会好奇为什么 argv 后面有方括号中的 2。这是因为所有命令行参数都会被传递给 argv 属性。

  • 第一个参数 0 是 process.execPath,即 Node 可执行文件的路径。
  • 第二个参数 1 是正在运行的 JavaScript 文件路径。
  • 之后的参数(如果有)就是命令行传入的参数。在我们的例子中,这只是一个简单的 Hello。

尝试取消注释第 2 行到第 4 行的代码,以便了解这些索引的具体含义。

我们还有像 yargs 这样的工具包,可以更轻松地解析命令行参数。

控制台输入

在 Node.js 中,我们通常不需要在程序中使用控制台输入,因为大多数情况下我们处理的是具有易用前端的程序。但有时确实需要从控制台获取输入。为此,我们可以使用 readline 模块。让我们看看它是如何工作的。点击 RUN 按钮开始。

No configuration found for ID: 6e11ca101121cc6cafba155f0b27b6962797f5d1e131946af5c3be0a7598b127

让我们逐步分析代码:

  • 第 1 行:我们导入了 readline 模块,以便在代码中使用它。
  • readline 模块需要一个“接口”来工作。这个接口可以是文件,也可以是我们的控制台。我们希望从控制台获取输入,并将信息输出到控制台。在 Node.js 中,process 对象提供了两个属性:stdin 用于输入,stdout 用于输出。我们使用 createInterface 方法创建一个新的 readline.Interface 实例,并将其保存为 rl(第 3 行)。
  • 第 8 行定义了我们的 query,这是将在控制台上显示的内容。
  • readline.Interface 提供了一个名为 question 的方法,用于从控制台向用户提出问题。question 方法接收一个之前定义的 query 字符串和一个 callback 回调函数。回调函数的第一个参数就是用户输入的内容。
  • 我们的 callback 函数是一个简单的 console.log(),其中包含用反引号包裹的 ${answer}。反引号中的 ${answer} 会被实际输入的内容替换(第 11 行)。
  • 一个非常重要的方法 rl.close() 在第 13 行被调用。该方法通知接口我们已完成控制台的输入输出操作,Node.js 可以继续执行后续逻辑。

虽然看起来一下子接触到了很多信息,但随着课程的推进,这些概念会逐渐变得清晰。我们将在接下来的课程中详细讨论上述提到的大部分技术术语。

Course Image

简介

控制台