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

来源:互联网 发布:淘宝客新手怎么推广 编辑:程序博客网 时间:2024/04/28 05:10

准备工作:
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.argvprocess.argv.forEach(function(val, index, array) {  console.log(index + ': ' + val);});
process的更多属性及方法,请参考官方文档

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

0 0
原创粉丝点击