Node.JS编程入门55:REPL竞有这么强大!

Node.JS编程入门55:REPL竞有这么强大!在Node中,有一个神器:REPL,全称是:Read Eval Print Loop。即:交互式解释器。从名称上,看不出它能干什么。那么,我们直接从一个示例来看吧:本文共需两个程序:首先是test55.

大家好,欢迎来到IT知识分享网。

在Node中,有一个神器:REPL,全称是:Read Eval Print Loop。即:交互式解释器。

从名称上,看不出它能干什么。那么,我们直接从一个示例来看吧:

Node.JS编程入门55:REPL竞有这么强大!

本文共需两个程序:

首先是test55.js,它用以前文章中的一个例程代码,再加一个REPL服务器功能:

var http = require(“http”);

var test=”this is a test”;

var server = http.createServer(function(req,res){

res.writeHead(200,{“Content-Type”:”text/plain”});

res.write(“Hello JShaman.com”);

res.end();

})

server.listen(8000,function(){

console.log(“listening on port 8000”);

});

//repl部分:

var net = require(“net”);

var repl = require(“repl”);

net.createServer(function(socket){

var r = repl.start({

input:socket,

output:socket,

terminal:true,

useGlobal:true

});

r.on(“exit”,function(){

socket.end();

})

r.context.server = server;

r.context.test = test;

}).listen(1337);

console.log(“repl listening on 1337”);

前半部分,是一个简单的http服务器功能,后面部分是repl服务器部分。

接下来,还需要一个repl服务器:

repl_client.js:

var net = require(“net”);

var socket = net.connect(1337);

process.stdin.setRawMode(true);

process.stdin.pipe(socket);

socket.pipe(process.stdout);

socket.once(“close”,function(){

process.stdin.destroy();

})

有了这两部分程序,就可以演示repl的强大了:

启动test55.js,再启动repl_client.js。

在repl_client命令行中操作:

1、通过REPL查看进程信息,如:运行了多少、使用了多少内存:

Node.JS编程入门55:REPL竞有这么强大!

注:运行时间单位是秒,内存用量单位是byte。

有点意思了。

2、通过REPL查看程序中的变量:

Node.JS编程入门55:REPL竞有这么强大!

Node.JS编程入门55:REPL竞有这么强大!

这是怎么实现的呢?test55.js程序中的变量,被REPL客户端获取了。

当然,我们也可以通过类似的方法获取其它变量,用于调试的话,这会非常强大。

但这还不是最强大的。

2、通过REPL控制程序行为:

输入:

console.log(test);

看看发生什么?

Node.JS编程入门55:REPL竞有这么强大!

主程序中输出了!

更进一步:修改主程序中的变量:

Node.JS编程入门55:REPL竞有这么强大!

还有更过份的:修改主程序,给主程序添加函数:

Node.JS编程入门55:REPL竞有这么强大!

然后,在浏览器中访问主程序端口:

Node.JS编程入门55:REPL竞有这么强大!

执行了console方法,并且有我们上面设定的标识:“MYGOD!“。

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

(0)

相关推荐

发表回复

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

关注微信