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

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

欢迎大家来到IT世界,在知识的湖畔探索吧!

Node.js 中 REPL 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。 Node 自带了交互式解释器,可以执行以下任务:

Node 自带了交互式解释器,可以执行以下任务:

  • 读取:读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
  • 执行 :执行输入的数据结构。
  • 打印 :输出结果。
  • 循环 :循环操作以上步骤直到用户两次按下 Ctrl-c按钮退出。

repl模块介绍

repl模块提供了一种“读取-求值-输出”循环的实现,可以作为一个独立的程序或嵌入到其他应用中。

repl模块的引入方式如下所示:

const repl = require('repl');

欢迎大家来到IT世界,在知识的湖畔探索吧!

repl 模块导出了 repl.REPLServer 类,当 repl.REPLServer 实例运行时,它接收用户输入的每一行,根据用户定义的解释函数解释这些输入,然后输出结果。输入可以是 stdin,输出可以是 stdout,或者也可以连接到其他任何 Node.js 流。

repl.REPLServer 实例支持输入的自动补全、精简 Emacs 风格的行编辑、多行输入、ANSI 风格的输出、当前 REPL 会话状态的保存与恢复、错误校正、以及可定制的解释函数。

命令与特殊键

所有 REPL 的实例都支持下列特殊命令:

  • .break :在输入一个多行表达式的过程中,输入 .break 命令将终止表达式的继续输入。
  • .clear : 重置 REPL 的 context 为一个空对象,并清除当前正输入的所有多行表达式。
  • .exit:关闭输入输出流,退出 REPL。
  • .help :显示特定命令的帮助列表。
  • .save :保存当前 REPL 会话到一个文件。
  • .load:读取一个文件到当前 REPL 会话。
  • .editor:进入编辑模式(<ctrl>-D 完成, <ctrl>-C 取消)。

REPL 中下列按键组合有特殊作用:

  • <ctrl>-C :当按下一次时,与 .break 命令的效果一样。当在空白行按下两次时,与 .exit 命令的效果一样。
  • <ctrl>-D :与 .exit 命令的效果一样。
  • <tab> :当在空白行按下时,显示全局和本地作用域内的变量。当在输入时按下,显示相关的自动补全选项。

简单的表达式运算

我们可以在Node.js REPL的命令行窗口执行简单的数学运算。

示例:

例如向命令窗口输入node命令,按下回车键,就可以在里面进行数学运算啦:

欢迎大家来到IT世界,在知识的湖畔探索吧!$ node > 1+2 3 ​ >10-(5*2)+3 3

大家自己试一下呀,比较简单,所以这里就不上效果图了。

使用变量

在 REPL 的命令行窗口声明变量需要使用 var 关键字,如果没有使用 var 关键字则会直接打印出来。

想要输出变量的值可以使用 console.log()方法。

示例:

$node > var a = 1 undefined ​ > a = 1 1 ​ > console.log(a) 1 undefined

默认的解释器会把最近一次解释的表达式的结果赋值给变量 _ (下划线)。 显式地设置 _ 为某个值能禁用该特性。

欢迎大家来到IT世界,在知识的湖畔探索吧!$node >5 5 >_ + 6 11 ​ >1+1 2 >_ 2

多行表达式使用

Node REPL 支持输入多行表达式。

示例

$node >a = 1 >if (a = 1){ ...console.log(a) ...} 1 undefined    

上述代码中三个点的符号是系统自动生成的,需要换行直接按回车就可以,Node 会自动检测是否为连续的表达式。

REPLServer 类中的事件的使用

exit事件

当接收到 .exit 命令、或按下两次 <ctrl>-C 发出 SIGINT 信号、或按下 <ctrl>-D 发出 ‘end’ 信号而使 REPL 被退出时,触发 ‘exit’ 事件。 监听器的回调函数被调用时不带任何参数。

replServer.on('exit', () => {  console.log('exit事件');  process.exit(); });

reset事件

当 REPL 的上下文被重置时,触发 ‘reset’ 事件。每当接收到 .clear 命令时会触发该事件,除非 REPL 正在使用默认的解释器并且 repl.REPLServer 实例被创建时 useGlobal 选项被设为 true。 监听器的回调函数被调用时会带上 context 对象作为惟一的参数。

var repl = require('repl'); ​ function initializeContext(context) {  context.x = 'test'; } ​ var r = repl.start({ prompt: '> ' }); initializeContext(r.context); ​ r.on('reset', initializeContext);

当代码被执行时,全局的 ‘x’ 变量可以被修改,但随后的 .clear 命令会把它重置回初始值:

> node test.js >x 'test' > x = 5 5 >x 5 > .clear Clearing context... > x 'test'

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/76098.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信