赞
踩
REPL 其实就是 Read Eval Print Loop 的缩写,中文译名是交互式解释器;其实说白了就是命令行的开发工具,这个也是 Node.js 的基础功能之一,使得我们可以不必借助浏览器环境,直接开发和运行一些无需 GUI 的程序,也就从很多方面上看起来更接近传统的开发语言环境。
今天这一章节就来看看它。
Node.js REPL(Read Eval Print Loop,交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
Node 自带了交互式解释器,可以执行以下任务:
Node 的交互式解释器可以很好的调试 JavaScript 代码。
我们可以输入 node 命令来启动 Node 的终端:
这时我们就可以在 > 后输入简单的表达式,并按下回车键来计算结果。
接下来让我们在 Node.js REPL 的命令行窗口中执行简单的数学运算:
我们也可以将数据存储在变量中,并在需要的时候使用它。
变量声明需要使用 var、let、const 等关键字,如果没有使用关键字变量会直接打印出来,并声明为全局变量。
变量可以使用 console.log() 来输出。
Node REPL 支持输入多行表达式,这就有点类似 JavaScript,接下来让我们来执行一个 do-while 循环:
... 三个点的符号是系统自动生成的,回车换行后即可;Node 会自动检测是否为连续的表达式。
我们可以使用下划线 _ 获取上一个表达式的运算结果:
前面我们已经提到按下两次 ctrl + c 或者 ctrl + d 键就能退出 REPL,其实还有一种方法,是使用命令 .exit:
其实这里我们不难看出,REPL 本身是和系统的 shell 有关联的,也就是说它也同样可以直接和操作系统进行命令交互,这样我们就可以直接编程,来实现系统的可执行脚本,例如这里有个一句话的 hello.js:
console.log('hello ', process.argv[2]);
我们可以看到参数二是个读取当前进程的参数,如果使用传统的执行方式,比如:
就可以获取到第二个参数并生成结果了,虽然这种方式有点繁琐。
如果是 Linux 的话,我们还可以通过在当前目录下新建 package.json ,写入下面的内容:
- {
- "name": "hello",
- "bin": {
- "hello": "hello"
- }
- }
然后执行 npm link 命令,从而进行全局模块链接,使得 hello 成为一个可识别的命令:
npm link
最后直接使用即可:
hello Michael
而 Windows 要想实现就比较复杂,因为 Windows 本身对 .js 有个解释器(Windows Script Host),而直接执行一个 .js 文件的话,就会调用这个解释器,此时它的接口与浏览器和 Node 环境都是很不同的,比如这个直接在控制台显示信息的小程序,直接执行会报错:
故此,为了让 .js 的默认应用成为 Node,我们还需要比较复杂的操作,除非的确有此必要(比如必须经常的开发基于 Node.js 的命令行工具),我个人觉得就别折腾了,直接在命令行里面 node hello 也可以啦,毕竟出于易用性,给最终用户使用的程序都是有 GUI 的,浏览器或者 Electron 的 GUI 不香么?
命令行工具,我会更倾向于使用 Windows 自带的 PowerShell 或者 Linux 的 Bash、Zsh等,原生的命令用起来还是很容易实现批量工作的,对吧。
所以 REPL 对我来说,更像一个可以及时验证自己灵光一现想法的小平台,而在实际进行开发的过程当中,编辑器和运行平台仍然是获取反馈、排错的首选。
当然每个人都有自己的想法,以上仅仅是我自己的想法,不代表大众。