未知方法process.openStdin()
我试图将grep结果input到nodejs脚本中。 我发现,我应该从process.stdin接收数据。
另外我发现了几种使用stdin的方法。 但他们是不同的,我不能find所有的信息。 我知道四种方式(前3开始与var data = ""
):
1)在search结果中最受欢迎
process.stdin.resume(); process.stdin.setEncoding( 'utf8' ); process.stdin.on('data', function(chunk) { data += chunk; }); process.stdin.on('end', function() { console.log('data: ' + data); });
2)看起来像第一个,但function未知process.openStdin()
var stdin = process.openStdin(); stdin.on('data', function(chunk) { data += chunk; }); stdin.on('end', function() { console.log('data: ' + data); });
3)在我读过的文档中,调用stdin.resume()
将标准input改为“旧types”。 所以如果我们不叫“简历” – 我们可以使用“可读”的事件
process.stdin.setEncoding('utf8'); process.stdin.on('readable', function() { data += process.stdin.read(); }); process.stdin.on('end', function() { console.log('data: ' + data); });
4)使用模块readline。 只要grep结果是多行的,并且我不需要自己拆分接收到的数据,这是非常有用的。 但是很长一段时间我都不明白为什么所有的信息都直接input到stdout。 然后,我发现我们可以传递空的对象而不是process.stdout创build接口和数据不会pipe道输出。
var readline = require('readline'), //rl = readline.createInterface(process.stdin, process.stdout); rl = readline.createInterface(process.stdin, {}); rl.on('line', function(data) { console.log('line: ' + data); });
5)我自己的变种。 使用另一个模块“拆分” – 它允许从stream中读取数据并按照指定的符号(默认为\r?\n
)将数据分割成chuks。 我用它来处理套接字,一旦stdin也是可读的stream – 我们可以在这里使用它。
var split = require('split'); process.stdin.setEncoding('utf8'); process.stdin.pipe(split()).on('data', function(data) { console.log('line: ' + data); });
我的问题是“什么是process.openStdin();
”
我search了谷歌的每一个页面,但没有find这个function的任何文档!
在search的同时,我发现,nodejs的官方文档是丑陋的 – 没有提到,因为哪些版本的方法可用,没有关于许多对象/方法的详细描述,没有用户评论。 而这种方法( openStdin
) – 存在和工作,但无处描述! 跆拳道???
在写这个问题的时候我find了答案:)
它在nodejs的源代码中:
process.openStdin = function() { process.stdin.resume(); return process.stdin; };
但是我想知道,为什么没有在文档中描述? 如果它只是一个私人用途的function,那为什么许多人使用这个function,