1. 程式人生 > >node中全域性物件三 --- process

node中全域性物件三 --- process

 process模組用來與當前程序的互動。process其實完整的寫法是global.process

process物件提供了一系列的屬性、方法和事件。

一:屬性

  • process.pid:當前程序的程序號
  • process.version:Node的版本,比如v0.10.18
  • process.platform:當前系統平臺,比如Linux
  • process.title:預設值為“node”,可以自定義該值
  • process.argv:當前程序的命令列引數陣列
  • process.env:指向當前shell的環境變數,比如process.env.HOME
  • process.execPath:運行當前程序的可執行檔案的絕對路徑
  • process.stdout:指向標準輸出
  • process.stderr:指向標準錯誤
  • process.stdin: 指向標準輸入,用於監聽使用者的輸入。
現在對以上的一些屬性進行講解一下

   (1、process.stdout   process.stderr,在命令視窗中向用戶顯示內容

    
   顯示結果發現該兩個的區別顏色不一樣,跟console.log和console.error差不多。

   (2、process.stdin ---該方法用於監聽使用者的輸入。

           在webstorm中執行之後在控制檯處出現游標閃爍,說明可以輸入,回車則顯示輸入的內容。          

     在cmd命令列下執行也是一樣,可以輸入,回車之後顯示輸入的內容,按ctrl+c則可以退出輸入。      在nodeJs的舊版本中,預設情況下,輸入流是關閉的,要監聽處理輸入流資料,首先要開啟輸入流:process.stdin.resume();      不過在新版本中不需要這個了。      我們下面用一個例子來講標準輸入輸出結合起來使用:     
process.stdin.setEncoding('utf-8');

var a, b;
process.stdout.write("請輸入a的值:");
process.stdin.on('data',function(chunk){
    if(!a){
        a = Number(chunk);

        process.stdout.write("請輸入b的值:");
    }else{
        b = Number(chunk);
        process.stdout.write("a + b = " +(a+b));
    }


});
    根據輸入步驟輸入a , b 的值之後,該段程式碼的執行結果為:      

     (3: process.argv  這個是以陣列的形式來顯示

                         在cmd下命令下執行結果如下:                        可以看出輸出的形式是以陣列的形式輸出的,0:是node命令的絕對路徑1:是node執行的js檔案的絕對路徑,2....(陣列的後面主要由執行命令後面跟資料決定)

二:process提供的方法

  • process.exit():退出當前程序
  • process.cwd():返回運行當前指令碼的工作目錄的路徑
  • process.chdir():改變工作目錄
  • process.nextTick():將一個回撥函式放在下次事件迴圈的頂部
        下面我們對process.cwd()來詳細的講解一下          在webstorm下,我們發現執行結果和__dirname的執行結果是一樣的,          但是他們兩個也有區別,__dirname表示程式碼js檔案所在目錄           process.cwd()表示執行node命令的時候(cmd命令列下),我們在哪個目錄  current working dir   

  三:process 方法提供的事件

  •  exit事件 :當前程序退出時,會觸發exit事件
  •  uncaughtException事件 : 當前程序丟擲一個沒有被捕捉的意外時,會觸發uncaughtException事件
  •  readable  :有東西可以讀取的時候就會觸發這個事件
  •  SIGINT : 如在cmd命令列下輸入ctrl+C 觸發的退出行為
        下面我們對一些事件處理進行詳細的講解

        (1、readable 

                     上圖控制檯中綠色框為輸入的內容,紅色框內的為回車之後讀取打印出來的資料。      

     (2、exit  SIGINT 

               下面我們用一個例子來總體瞭解一下這兩個事件。                               這次我們在cmd控制檯處執行,執行之後輸入2回車之後則列印了2(如下圖),祝部分主要是process的stdin屬性起的作用              
            接著我按ctrl+c來進行取消程序,則結果如下圖顯示,首先是ctrl+c觸發了SIGINT事件,所以首先列印了“Program has a signal”;                                                                                                          然後 process.exit();觸發了exit事件,所以後面跟著列印了"Program will exit"。