Skip to content

如何使用 Node.js REPL

node 命令用于运行我们的 Node.js 脚本:

bash
node script.js

如果我们运行 node 命令没有任何要执行的脚本或任何参数,我们将启动一个 REPL 会话:

bash
node

注意

REPL 代表 Read Evaluate Print Loop(读取-求值-打印-循环),它是一个编程语言环境(基本上是一个控制台窗口),它将单个表达式作为用户输入,并在执行后将结果返回到控制台。REPL 会话提供了一种方便的方法来快速测试简单的 JavaScript 代码。

如果您现在在终端中尝试一下,将会发生以下情况:

bash
> node
>

命令保持空闲模式并等待我们输入内容。

TIP

如果您不确定如何打开终端,请搜索“如何在您的操作系统上打开终端”。

REPL 正在等待我们输入一些 JavaScript 代码,更准确地说。

从简单的开始,输入:

bash
> console.log('test')
test
undefined
>

第一个值 test 是我们告诉控制台打印的输出,然后我们得到 undefined,这是运行 console.log() 的返回值。Node 读取了这一行代码,对其进行了求值,打印了结果,然后又开始等待更多代码行。对于我们在 REPL 中执行的每一块代码,Node 将循环执行这三个步骤,直到我们退出会话。这就是 REPL 获得其名称的地方。

Node 会自动打印任何 JavaScript 代码行的结果,而无需我们指示它这样做。例如,输入以下行并按 Enter 键:

bash
> 5==5
true
>

注意上述两行的输出差异。Node REPL 在执行 console.log() 后打印了 undefined,而另一方面,它只打印了 5== '5' 的结果。您需要注意的是,前者只是 JavaScript 中的一个语句,而后者是一个表达式。

在某些情况下,您要测试的代码可能需要多行。例如,假设您要定义一个生成随机数的函数,在 REPL 会话中输入以下行并按 Enter 键:

javascript
function generateRandom()
...

Node REPL 足够聪明,可以确定您尚未完成代码编写,它将进入多行模式,以便您输入更多代码。现在完成您的函数定义并按 Enter 键:

javascript
function generateRandom()
...return Math.random()

特殊变量:

如果在一些代码之后输入 _,将会打印最后一次操作的结果。

上箭头键:

如果按下上箭头键,你将可以访问当前甚至之前的 REPL 会话中执行的先前代码行的历史记录。

点命令

REPL 有一些特殊的命令,都以点.开头。它们是:

  • .help: 显示点命令帮助。
  • .editor: 启用编辑器模式,以便轻松编写多行 JavaScript 代码。一旦进入此模式,输入 ctrl-D 来运行你编写的代码。
  • .break: 在输入多行表达式时,输入 .break 命令将中止进一步输入。与按下 ctrl-C 相同。
  • .clear: 将 REPL 上下文重置为空对象,并清除当前正在输入的任何多行表达式。
  • .load: 加载 JavaScript 文件(相对于当前工作目录)。
  • .save: 将你在 REPL 会话中输入的所有内容保存到文件中(指定文件名)。
  • .exit: 退出 repl(与两次按下 ctrl-C 相同)。

REPL 知道你何时正在输入多行语句,无需调用 .editor。例如,如果你开始输入这样的迭代:

javascript
[1, 2,3].foxEach(num=>{

然后你按下回车键,REPL 将进入以三个点开头的新行,表明你现在可以继续处理该代码块。

javascript
1... console.log (num)
2...}

如果你在一行的末尾输入 .break,多行模式将停止,并且语句将不会被执行。

从 JavaScript 文件运行 REPL

我们可以使用 repl 在 JavaScript 文件中导入 REPL。

javascript
const repl = require('node:repl')

使用 repl 变量,我们可以执行各种操作。要启动 REPL 命令提示符,请键入以下行:

javascript
repl.start()

在命令行中运行该文件。

bash
node repl.js

您可以传递一个字符串,该字符串在 REPL 启动时显示。默认值为 '>'(带尾随空格),但我们可以定义自定义提示符。

javascript
// 一个 Unix 风格的提示符
const local = repl.start('$ ')

您可以在退出 REPL 时显示一条消息

javascript
local.on('exit', () => {
  console.log('退出 repl')
  process.exit()
})

您可以在 repl 文档 中了解更多关于 REPL 模块的信息。