目录
1、Nodejs REPL
2、_特殊变量
3、向上箭头键
4、点命令
5、从JavaScript文件运行REPL
1、Nodejs REPL
REPL代表Read-Evaluate-Print-Loop,是交互式解释器。
node命令是我们用来运行Node.js脚本的命令:
node script.js
如果我们运行node命令而没有任何脚本执行或没有任何参数,我们将启动一个REPL会话:
node
注:REPL代表Read Evaluate Print Loop,它是一个编程语言环境(基本上是一个控制台窗口),它将单个表达式作为用户输入,并在执行后将结果返回到控制台。REPL会话提供了一种快速测试简单JavaScript代码的方便方法。
如果你现在在你的终端上尝试它,会发生这样的事情:
node
Welcome to Node.js v16.16.0.
Type ".help" for more information.
>
命令保持空闲模式,等待我们输入某些内容。
简单测试下:
> console.log(123)
123
undefined
第一个值123是我们告诉控制台打印的输出,然后我们得到undefined,这是运行console.log()的返回值。 Node读取这行代码,对其求值,打印结果,然后返回等待更多的代码行。Node将为我们在REPL中执行的每一段代码循环这三个步骤,直到我们退出会话。这就是REPL得名的原因。
Node自动打印任何一行JavaScript代码的结果,而不需要指示它这样做。例如,键入以下行并按Enter键:
> 5 === '5'
false
>
请注意以上两行的输出差异。Node REPL在执行了undefined之后打印了console.log(),而另一方面,它只打印了5 === '5'的结果。你需要记住,前者只是JavaScript中的一个语句,而后者是一个表达式。
在某些情况下,要测试的代码可能需要多行。例如,假设您要定义一个生成随机数的函数,在REPL会话中输入以下行并按Enter:
> function generateRandom() {
... console.log(123)
... }
undefined
2、_特殊变量
默认情况下,默认求值器将分配最近 将已求值表达式转换为特殊变量_(下划线)。
> generateRandom()
123
undefined
> _
undefined
>[1, 2, 3]
[1, 2, 3]
>_.length
3
3、向上箭头键
如果您按下up箭头键,您将可以访问在当前甚至以前的REPL会话中执行的前几行代码的历史记录。
4、点命令
REPL有一些特殊的命令,都以点.开头。
- .help:显示点命令帮助
- .editor:启用编辑器模式,轻松编写多行JavaScript代码。进入此模式后,输入ctrl-D以运行您编写的代码。
- .break:输入多行表达式时,输入。break命令将中止进一步的输入。与按ctrl-C相同。
- .clear:将REPL上下文重置为空对象,并清除当前正在输入的任何多行表达式。
- .load:加载一个JavaScript文件,相对于当前工作目录
- .save:将您在REPL会话中输入的所有内容保存到文件中(指定文件名)
- .exit:退出repl(与按Ctrl + C两次相同)
REPL知道您何时键入多行语句,而不需要调用.editor。
例如,如果你开始输入这样的迭代:
[1, 2, 3].forEach(num => {
按enter,REPL将转到以3个点开始的新行,表示您现在可以继续处理该块了。
... console.log(num)
... })
如果在一行的末尾键入.break,多行模式将停止,语句将不会执行。
5、从JavaScript文件运行REPL
我们可以使用repl将REPL导入JavaScript文件中。
const repl = require('repl');
使用repl变量,我们可以执行各种操作。 要启动REPL命令提示符,请键入以下行
repl.start();
在命令行中运行该文件。
node repl.js
> const n = 10
您可以传递一个字符串,显示REPL何时启动。默认值是'>'(后面有一个空格),但我们可以定义自定义提示符。
// Unix 风格的提示
const local = repl.start('$ ');
您可以在退出REPL时显示一条消息
local.on('exit', () => {
console.log('exiting repl');
process.exit();
});
您可以在退出REPL时显示一条消息
import repl from 'repl';
const local = repl.start('$ ');
local.on('exit', () => {
console.log('退出 repl ==========');
process.exit();
});
打印结果:
$ node repl.js
$
退出 repl ==========
退出当前交互环境的三种方式:
1、通过快捷键:CTRL + D
2、通过快捷键:CTRL + C (连续按2次)
3、命令行输入:.exit