玩转Node.js - 02. 接收命令行参数

Posted PhiloChou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转Node.js - 02. 接收命令行参数相关的知识,希望对你有一定的参考价值。

准备工作:
1. 来到我们的工作目录$ cd ~/nodejs
2. 如果还没有工作目录,请按下面方式新增

$ cd ~
$ mkdir nodejs
$ cd nodejs

目标:接收命令行一个或多个参数,并求和

Node.js为我们提供了一个全局对象process,其中process.argv属性可以获取到所有命令行参数。

下面,我们来简单测试一下:

创建或编辑文件:~/nodejs/program.js
内容只有一行:

console.log(process.argv)

保存退出,我们输入命令:

$ node program.js 1 2 3

控制台输出结果类似:

[ 'node', '/path/to/your/program.js', '1', '2', '3' ]

输出的第一个元素总是”node”,第二个元素是命令文件所在地址”/path/to/your/program.js”,后面开始就是命令行的各个参数。

所以如果我们要计算各个参数的和,需要从第3个元素(index为2)的地方开始遍历。

注意:process.argv输出的全部是字符串类型。我们可以用+process.argv[2]或者Number(process.argv[2])来转为数值类型。

下面开始实际操作:

1. 新建文件node02.js

$ vim node02.js

2. 申明一个变量result用来保存求和后的结果

var result = 0;

3. 使用for语句遍历命令行参数(process.argv)

for (var i = 2; i < process.argv.length; i++) 
    result += Number(process.argv[i]);

4. 使用console打印结果

console.log(result);

然后保存后,退出

5. 使用node命令运行程序

$ node node02.js 1 2 3

6. 检查控制台输出结果:

6

本篇代码

文件:~/nodejs/node02.js

var result = 0;

for (var i = 2; i < process.argv.length; i++) 
    result += Number(process.argv[i]);

console.log(result);

扩展阅读

process对象

process是Node.js中的一个全局对象,提供了跟进程相关的操作。同时也是”Class: events.EventEmitter”的实例,拥有”EventEmitter”的事件处理机制。

本例中,除了使用”process.argv”来获取命令行参数外,其实在console.log(result)调用时,内部也使用到了process所提供的标准输出流。

输出流案例:process.stdout

例如console.info([data][, …])的定义:

console.log = function(d) 
    process.stdout.write(d + '\\n');
;

内部使用了process.stdout用来向标准输出流输出日志

输入流案例:process.stdin
process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() 
    var chunk = process.stdin.read();
    if (chunk !== null) 
        process.stdout.write('data: ' + chunk);
    
);

process.stdin.on('end', function() 
    process.stdout.write('end');
);

运行以上程序,会把我们输入的内容原样打印出来。按”Control+D”结束程序时,会输出”end”。

参数获取案例:process.argv
// print process.argv
process.argv.forEach(function(val, index, array) 
  console.log(index + ': ' + val);
);
process的更多属性及方法,请参考官方文档

参考资料:
process Node.js v0.12.7 Manual & Documentation
learnyounode - BABY STEPS

以上是关于玩转Node.js - 02. 接收命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

如何将命令行参数传递给 Node.js 程序?

JavaScript Node.js:使用命令行参数