Node.js process

参考
《Node.js开发指南 ByVoid》Page 59
process 是一个全局变量,即 global 对象的属性。它用于描述当前 Node.js 进程状态的对象,提供了一个与操作系统的简单接口。通常在你写本地命令行程序的时候,少不了要和它打交道。下面将会介绍 process 对象的一些最常用的成员方法。

一、agrv

process.argv 这个有什么用途?
Node.js的语法是与Javascript一样吗

process.argv返回命令行脚本的各个参数组成的数组。可以获取bat里面的参数。

// print process.argv
process.argv.forEach(function(val, index, array) {
  console.log(index + ': ' + val);
});
$ node process.js one two=three four
0: node
1: /Users/node/process.js
2: one
3: two=three
4: four

可以看出,会将bat命令以空格为标记,拆成一个数组。索引0是node命令,索引1是运行路径。索引2开始就是参数了。

这个用处挺多的。例如你在bat的文件这样写。node app 127.0.0.1 7001 这时候通过.argv [2] 得到IP,argv[3]得到端口,更方便我们修改配置。

再看个例子:

/**
 * 通过process.argv读取命令行参数,其构造如下
 * 1.process.argv返回为是一个数组形式
 * 2.process.argv[0] 当前命令,一般为node,因为通过node执行
 * 3.process.argv[1] 当前命令执行的脚本完整路径
 * 4.process.argv[2,n] 命令参数
 */
//这里要实现通过命令行传参数进行求和的算法
console.log("1.当前执行的命令为:",process.argv[0]);
console.log("2.执行的脚本地址为:",process.argv[1]);
//这里截取参数数组中有效的参数列表
var params = process.argv.slice(2);
console.log("3.执行的命令参数为:",params);
var result = 0;
for(var i = 0;i<params.length;i++){
    //由于传入的参数都是字符串,所以要通过parseFloat进行转换
    var v = parseFloat(params[i]);
    //在转换后的值,可能存在非法的非数值的结果,
    //所以通过isNaN进行判断是否为非数值,如果为非数值,则跳过
    if(isNaN(v)) continue;
    result += v;
}
console.log("4.计算后的有效值的和为:",result);

执行

node process-argv.js 1 2 H 3 4
1.当前执行的命令为: node
2.执行的脚本地址为: /home/code/workspace/node/core/process-argv.js
3.执行的命令参数为: [ '1', '2', 'H', '3', '4' ]
4.计算后的有效值的和为: 10

最后一个例子

process.argv.forEach(function (val, index, array) {
      switch(val){
        case "-x":
          xlsxDir = process.argv[index+1];
        case "-w":
          asDir=process.argv[index+1];
         break;
        case "-s":
          serverDir=process.argv[index+1];
         break;
        case "-d":
          dataDir=process.argv[index+1];
         break;
      }
});

执行

@echo off
set PRO_PATH=../WgameH5/wgameH5Client/
set XLSX_PATH=../WGameConfig/xlsx
set AS_PATH=%PRO_PATH%src/data/staticData
set DATA_PATH=%PRO_PATH%bin/h5/res/data
set SERVER_PATH=./xml

del /q "%AS_PATH%\"
del /q "%DATA_PATH%" 
echo "******************node run ing *********************************"
node excelExport.js -x %XLSX_PATH% -w %AS_PATH% -d %DATA_PATH%  -s %SERVER_PATH%
pause
二、process.nextTick(callback)

参考Process.nextTick 和 setImmediate 的区别?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,252评论 19 139
  • 内容来自《Node.js开发指南》 核心模块是 Node.js 的心脏,它由一些精简而高效的库组成,为 Node....
    angelwgh阅读 930评论 0 1
  • 一种编程语言是否易用,很大程度上,取决于开发命令行程序的能力。 Node.js 作为目前最热门的开发工具之一,怎样...
    猪猪9527阅读 766评论 0 1
  • 1 Redis介绍1.1 什么是NoSql为了解决高并发、高可扩展、高可用、大数据存储问题而产生的数据库解决方...
    克鲁德李阅读 5,441评论 0 36
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 2,529评论 1 37