玩转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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值