node中全域性物件三 --- process
阿新 • • 發佈:2019-02-19
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(); 不過在新版本中不需要這個了。 我們下面用一個例子來講標準輸入輸出結合起來使用:
根據輸入步驟輸入a , b 的值之後,該段程式碼的執行結果為: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)); } });
(3: process.argv 這個是以陣列的形式來顯示
在cmd下命令下執行結果如下: 可以看出輸出的形式是以陣列的形式輸出的,0:是node命令的絕對路徑1:是node執行的js檔案的絕對路徑,2....(陣列的後面主要由執行命令後面跟資料決定)二:process提供的方法
- process.exit():退出當前程序
- process.cwd():返回運行當前指令碼的工作目錄的路徑
- process.chdir():改變工作目錄
- process.nextTick():將一個回撥函式放在下次事件迴圈的頂部
三: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"。