如何使用 Node.js REPL

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

node script.js

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

node

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

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

❯ node
❯

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

提示:如果您不确定如何打开终端,请搜索“如何在 <your-operating-system> 上打开终端”。

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

从简单开始并输入

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

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

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

> 5 === '5'
false
>

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

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

function generateRandom() {
...

Node REPL 足够智能,可以确定您还没有完成编写代码,它会进入多行模式,让您输入更多代码。 现在完成你的函数定义并按回车:

function generateRandom() {
...return Math.random()
}
undefined

Node 将退出多行模式,并打印 undefined,因为没有返回值。 这种多线模式是有限的。 Node 在 REPL 中提供了一个更具特色的编辑器。 我们在下面的点命令下讨论它。

使用tab自动补全

REPL 最酷的地方在于它是交互式的。

在您编写代码时,如果您按下 tab 键,REPL 将尝试自动完成您编写的内容以匹配您已经定义或预定义的变量。

探索 JavaScript 对象

尝试输入 JavaScript 类的名称,例如“Number”,添加一个点并按“tab”。

REPL 将打印您可以在该类上访问的所有属性和方法:

探索全局对象

你可以通过输入global.并按tab来检查你可以访问的全局变量:

_ 特殊变量

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

向上箭头键

如果您按“向上”箭头键,您将可以访问在当前甚至以前的 REPL 会话中执行的前几行代码的历史记录。

.命令

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 => {

然后你按下回车键,REPL 将转到一个以 3 个点开头的新行,表示你现在可以继续在该块上工作。

... console.log(num)
... })

如果在行尾键入.break,多行模式将停止,语句不会被执行。

从 JavaScript 文件运行 REPL

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

const repl = require('repl');

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

const local = repl.start(prompt);

repl.start() 启动 REPL 环境,提示符是一个字符串,它接受显示 REPL 何时启动的提示符。 默认为’>',但我们可以定义自定义提示。

在命令行中运行该文件。

node repl.js
>const n = 10

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

local.on('exit', () => {console.log('exiting repl');process.exit();
});

10.如何使用 Node.js REPL相关推荐

  1. 15.Node.js REPL(交互式解释器)

    转自:http://www.runoob.com/nodejs/nodejs-tutorial.html Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电 ...

  2. 4、Node.js REPL(交互式解释器)

    Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并 ...

  3. mac node repl_如何使用Node.js REPL

    mac node repl The author selected the Open Internet/Free Speech Fund to receive a donation as part o ...

  4. Node.js 官网入门教程(一) CommonJS 模块规范、Node.js REPL、console、CLI、exports

    Node.js 官网入门教程(一) CommonJS 模块规范.Node.js REPL.console.CLI.exports 文章目录 Node.js 官网入门教程(一) CommonJS 模块规 ...

  5. npm should be run outside of the Node.js REPL, in your normal shell

    错误: npm should be run outside of the Node.js REPL, in your normal shell 在搭建vue环境时报错, 设置缓存文件夹 npm con ...

  6. Node.js REPL(交互式解释器)

    Node.js REPL(交互式解释器)是一个特殊的命令行环境,可以让我们在命令行中直接执行 JavaScript 代码.REPL 是"Read-Eval-Print-Loop"的 ...

  7. 如何在 Windows 10 中搭建 Node.js 环境?

    2019独角兽企业重金招聘Python工程师标准>>> [编者按]本文作者为 Szabolcs Kurdi,主要通过生动的实例介绍如何在 Windows 10 中搭建 Node.js ...

  8. 10个最佳Node.js企业应用案例:从Uber到LinkedIn

    译者按: Node.js 8已经发布了,NPM模块每周下载量早已超过10亿,从Uber到LinkedIn都在使用Node.js,谁说JavaScript不能写后台? 原文: 10 best Node. ...

  9. 10+ 最佳的 Node.js 教程和实例

    如果你正在找Node.js的学习资料及指南,那么请继续(阅读),我们的教程将会覆盖即时聊天应用.API服务编写.投票问卷应用.人物投票APP.社交授权. Node.js on Raspberry Pi ...

最新文章

  1. geoserver 通过代码实现发布地图服务
  2. 京东全球购11·11战报:面膜售出430万片,爽肤水销售额是同期7倍
  3. mnn c++ windows 调用实例
  4. vue[源码]你不知道的observe!
  5. centos7编译安装mysql5.7_在Centos7源码包编译安装MySQL5.7
  6. C指针原理(23)-win32汇编及.NET调试
  7. win7计算机ping不通,win7系统局域网中ping不通本机的解决方法
  8. android源码分析(一) - 语言切换机制
  9. php curl exec ch,PHP curl_exec函数
  10. C/C++[指针/引用]
  11. 2022年最新过DD检测方法dd防检测方法
  12. 解决Win10无法安装运行SqlServer 2000
  13. Python-玩转数据-XML 解析
  14. 继杭州购房宝典后,Github上的这个程序员买房实用指南火了!
  15. 利用javascript写一个石头剪刀布的简易小游戏
  16. lstm token分类模型代码解析(直接传入batch数据,测试pad和pack_padded、pad_packed三函数)
  17. 基于微信小程序小说图书商城管理系统(微信小程序毕业设计)
  18. [CV] 基于机器视觉和强化学习的导航
  19. 小程序发送 request请求失败 提示不在合法域名列表中的解决方法
  20. 信息熵:什么是信息熵?

热门文章

  1. IllegalReferenceCountException: refCnt: 0, decrement: 1
  2. 计算机网络(七)——互联网上的音频/视频服务 和 无线网络与移动网络
  3. 重磅:阿里开启大规模校招,传已启动保密项目
  4. 迅雷极速版 win10 奔溃、闪退,官方补丁无法安装解决办法
  5. 【线段树】超市促销 rqnoj572
  6. 论文阅读——Globally and Locally Consistent Image Completion
  7. 解决IDEA提交代码时提示“Performing Code Analysis...”
  8. springboot设置空参数_springboot请求参数为空
  9. 小甲鱼飞机大战(素材+代码)
  10. 房多多Q2营收同比下降46%:亏损同比扩大8.9倍,股价再创新低