题记:
这几天一直在学习Node.js,正好学习到了Node的process对象,以及此对象中的一些内容。下面,今天就来讲讲怎么利用原生的process来实现,基本的循环输入!
正文:
首先呢,我们要先来认识一下process对象,什么是process对象呢?process对象其实就是代表着Node.js的应用程序,也是一个全局对象。再次不在赘述,今天我们主要来看看process对象的两个比较特别的属性stdin与stdout。
- stdin:属性值为一个可用于写入标准输入流的对象,在默认情况下标准输入流是暂停状态需要使用
process.stdin.resume();
- stdout:属性值为一个可用于写入标准输出流的对象
了解了基本知识,我们可以来看看代码如何实现process的循环输入
process.stdin.setEncoding('utf8'); process.stdin.on('readable', function(){ var chunk = process.stdin.read(); // 获取到输入的信息 if(typeof chunk === 'string'){ chunk = chunk.slice(0,-2); // 这个是利用切片,切掉我们的回车\n process.stdout.write('stringLength:'+ chunk.length +'\n'); } if(chunk === ''){ process.stdin.emit('end'); // 触发end事件 return } if (chunk !== null) { process.stdout.write('data: '+ chunk +'\n'); } }); process.stdin.on('end', function() { process.stdout.write('end'); });
大家可以看到,当我输入字符串时,可以获取到我字符串的长度,并输出长度与字符串,
而我只输入回车时,我用
slice(0,-2)
剪切掉了\n,实现了过滤回车的效果。
其中值得注意的是,如何触发process.stdin的end事件!
使用
process.stdin.exit()
并不能触发end事件,而我们只能利用
process.stdin.emit('end');
来触发,值得我们注意哦!也有助于我们想用node来刷题的同学使用!