Node.js process

參考
《Node.js開發(fā)指南 ByVoid》Page 59
process 是一個全局變量,即 global 對象的屬性。它用于描述當前 Node.js 進程狀態(tài)的對象,提供了一個與操作系統(tǒng)的簡單接口。通常在你寫本地命令行程序的時候,少不了要和它打交道。下面將會介紹 process 對象的一些最常用的成員方法。

一、agrv

process.argv 這個有什么用途?
Node.js的語法是與Javascript一樣嗎

process.argv返回命令行腳本的各個參數(shù)組成的數(shù)組??梢垣@取bat里面的參數(shù)。

// 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命令以空格為標記,拆成一個數(shù)組。索引0是node命令,索引1是運行路徑。索引2開始就是參數(shù)了。

這個用處挺多的。例如你在bat的文件這樣寫。node app 127.0.0.1 7001 這時候通過.argv [2] 得到IP,argv[3]得到端口,更方便我們修改配置。

再看個例子:

/**
 * 通過process.argv讀取命令行參數(shù),其構造如下
 * 1.process.argv返回為是一個數(shù)組形式
 * 2.process.argv[0] 當前命令,一般為node,因為通過node執(zhí)行
 * 3.process.argv[1] 當前命令執(zhí)行的腳本完整路徑
 * 4.process.argv[2,n] 命令參數(shù)
 */
//這里要實現(xiàn)通過命令行傳參數(shù)進行求和的算法
console.log("1.當前執(zhí)行的命令為:",process.argv[0]);
console.log("2.執(zhí)行的腳本地址為:",process.argv[1]);
//這里截取參數(shù)數(shù)組中有效的參數(shù)列表
var params = process.argv.slice(2);
console.log("3.執(zhí)行的命令參數(shù)為:",params);
var result = 0;
for(var i = 0;i<params.length;i++){
    //由于傳入的參數(shù)都是字符串,所以要通過parseFloat進行轉換
    var v = parseFloat(params[i]);
    //在轉換后的值,可能存在非法的非數(shù)值的結果,
    //所以通過isNaN進行判斷是否為非數(shù)值,如果為非數(shù)值,則跳過
    if(isNaN(v)) continue;
    result += v;
}
console.log("4.計算后的有效值的和為:",result);

執(zhí)行

node process-argv.js 1 2 H 3 4
1.當前執(zhí)行的命令為: node
2.執(zhí)行的腳本地址為: /home/code/workspace/node/core/process-argv.js
3.執(zhí)行的命令參數(shù)為: [ '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;
      }
});

執(zhí)行

@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 的區(qū)別?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • 內容來自《Node.js開發(fā)指南》 核心模塊是 Node.js 的心臟,它由一些精簡而高效的庫組成,為 Node....
    angelwgh閱讀 979評論 0 1
  • 一種編程語言是否易用,很大程度上,取決于開發(fā)命令行程序的能力。 Node.js 作為目前最熱門的開發(fā)工具之一,怎樣...
    豬豬9527閱讀 838評論 0 1
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)、高可擴展、高可用、大數(shù)據存儲問題而產生的數(shù)據庫解決方...
    克魯?shù)吕?/span>閱讀 5,726評論 0 36
  • 個人入門學習用筆記、不過多作為參考依據。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,653評論 1 37

友情鏈接更多精彩內容