13、Node.js 全域性物件

_nbloser發表於2018-07-13

主要用於除錯,顯示資訊,重點看例子
在瀏覽器 JavaScript 中,通常 window 是全域性物件, Node.js 中的全域性物件是 global

####__filename
__filename 表示當前正在執行的指令碼的檔名。它將輸出檔案所在位置的絕對路徑,且和命令列引數所指定的檔名不一定相同。 如果在模組中,返回的值是模組檔案的路徑。

###__dirname
__dirname 表示當前執行指令碼所在的目錄。

###setTimeout(cb, ms)
setTimeout(cb, ms) 全域性函式在指定的毫秒(ms)數後執行指定函式(cb)。:setTimeout() 只執行一次指定函式。
返回一個代表定時器的控制程式碼值。

###clearTimeout(t)
clearTimeout( t ) 全域性函式用於停止一個之前通過 setTimeout() 建立的定時器。 引數 t 是通過 setTimeout() 函式建立的定時器。

###setInterval(cb, ms)
setInterval() 方法會不停地呼叫函式,直到 clearInterval() 被呼叫或視窗被關閉。

##################################################################
console
console 用於提供控制檯標準輸出
console 方法
1
console.log([data][, …])
向標準輸出流列印字元並以換行符結束。該方法接收若干 個引數,如果只有一個引數,則輸出這個引數的字串形式。如果有多個引數,則 以類似於C 語言 printf() 命令的格式輸出。
2
console.info([data][, …])
該命令的作用是返回資訊性訊息,這個命令與console.log差別並不大,除了在chrome中只會輸出文字外,其餘的會顯示一個藍色的驚歎號。
3
console.error([data][, …])
輸出錯誤訊息的。控制檯在出現錯誤時會顯示是紅色的叉子。
4
console.warn([data][, …])
輸出警告訊息。控制檯出現有黃色的驚歎號。
5
console.dir(obj[, options])
用來對一個物件進行檢查(inspect),並以易於閱讀和列印的格式顯示。
6
console.time(label)
輸出時間,表示計時開始。
7
console.timeEnd(label)
結束時間,表示計時結束。
8
console.trace(message[, …])
向標準錯誤流輸出當前的呼叫棧。當前執行的程式碼在堆疊中的呼叫路徑,這個測試函式執行很有幫助,只要給想測試的函式裡面加入 console.trace 就行了。
9
console.assert(value[, message][, …])
用於判斷某個表示式或變數是否為真,接收兩個引數,第一個引數是表示式,第二個引數是字串。只有當第一個引數為false,才會輸出第二個引數,否則不會有任何結果。

################例子

console.info(`程式開始執行`);

var counter = 10;
console.log(`計數:%d`, counter);

console.time(`獲取資料`);
final_money = 10 * (1.132**5);
console.log(`%f`, final_money);
console.timeEnd(`獲取資料`);

console.info(`程式執行完畢`);

執行結果:
程式開始執行
計數:10
18.58797733522431
獲取資料: 0.190ms
程式執行完畢

 

##################################################################
process
process 是一個全域性變數,即 global 物件的屬性
#########################################事件
1
exit
當程式準備退出時觸發。
2
beforeExit
當 node 清空事件迴圈,並且沒有其他安排時觸發這個事件。通常來說,當沒有程式安排時 node 退出,但是 `beforeExit` 的監聽器可以非同步呼叫,這樣 node 就會繼續執行。
3
uncaughtException
當一個異常冒泡回到事件迴圈,觸發這個事件。如果給異常新增了監視器,預設的操作(列印堆疊跟蹤資訊並退出)就不會發生。
4
Signal 事件
當程式接收到訊號時就觸發。訊號列表詳見標準的 POSIX 訊號名,如 SIGINT、SIGUSR1 等。

#事件例項

process.on(`exit`, function (code) {
    // 下面這個程式碼不會執行
    setTimeout(function () {
        console.log(`這段程式碼不會執行`);
    },0);

    console.log(`退出碼為:`, code);

});

console.log(`程式結束`);

執行結果:
程式結束
退出碼為: 0

####
退出狀態碼
狀態碼
名稱 & 描述
1
Uncaught Fatal Exception
有未捕獲異常,並且沒有被域或 uncaughtException 處理函式處理。
2
Unused
保留
3
Internal JavaScript Parse Error
JavaScript的原始碼啟動 Node 程式時引起解析錯誤。非常罕見,僅會在開發 Node 時才會有。
4
Internal JavaScript Evaluation Failure
JavaScript 的原始碼啟動 Node 程式,評估時返回函式失敗。非常罕見,僅會在開發 Node 時才會有。
5
Fatal Error
V8 裡致命的不可恢復的錯誤。通常會列印到 stderr ,內容為: FATAL ERROR
6
Non-function Internal Exception Handler
未捕獲異常,內部異常處理函式不知為何設定為on-function,並且不能被呼叫。
7
Internal Exception Handler Run-Time Failure
未捕獲的異常, 並且異常處理函式處理時自己丟擲了異常。例如,如果 process.on(`uncaughtException`) 或 domain.on(`error`) 丟擲了異常。
8
Unused
保留
9
Invalid Argument
可能是給了未知的引數,或者給的引數沒有值。
10
Internal JavaScript Run-Time Failure
JavaScript的原始碼啟動 Node 程式時丟擲錯誤,非常罕見,僅會在開發 Node 時才會有。
12
Invalid Debug Argument
設定了引數–debug 和/或 –debug-brk,但是選擇了錯誤埠。
128
Signal Exits
如果 Node 接收到致命訊號,比如SIGKILL 或 SIGHUP,那麼退出程式碼就是128 加訊號程式碼。這是標準的 Unix 做法,退出訊號程式碼放在高位。

############################################Process 屬性
1
stdout
標準輸出流。
2
stderr
標準錯誤流。
3
stdin
標準輸入流。
4
argv
argv 屬性返回一個陣列,由命令列執行指令碼時的各個引數組成。它的第一個成員總是node,第二個成員是指令碼檔名,其餘成員是指令碼檔案的引數。
5
execPath
返回執行當前指令碼的 Node 二進位制檔案的絕對路徑。
6
execArgv
返回一個陣列,成員是命令列下執行指令碼時,在Node可執行檔案與指令碼檔案之間的命令列引數。
7
env
返回一個物件,成員為當前 shell 的環境變數
8
exitCode
程式退出時的程式碼,如果程式優通過 process.exit() 退出,不需要指定退出碼。
9
version
Node 的版本,比如v0.10.18。
10
versions
一個屬性,包含了 node 的版本和依賴.
11
config
一個包含用來編譯當前 node 執行檔案的 javascript 配置選項的物件。它與執行 ./configure 指令碼生成的 “config.gypi” 檔案相同。
12
pid
當前程式的程式號。
13
title
程式名,預設值為”node”,可以自定義該值。
14
arch
當前 CPU 的架構:`arm`、`ia32` 或者 `x64`。
15
platform
執行程式所在的平臺系統 `darwin`, `freebsd`, `linux`, `sunos` 或 `win32`
16
mainModule
require.main 的備選方法。不同點,如果主模組在執行時改變,require.main可能會繼續返回老的模組。可以認為,這兩者引用了同一個模組。

##屬性例項

// 輸出到終端
process.stdout.write(`love`+`
`);

// 通過引數讀取
process.argv.forEach(function (value, index, array) {
    console.log(index + `:` + value);
});

// 獲取執行的路徑
console.log(process.execPath);

// 平臺資訊
console.log(process.platform);


執行結果:
love
0:D:Program Files
odejs
ode.exe
1:F:
odejs_code9_global_object4_process_properties.js
D:Program Files
odejs
ode.exe
win32

############################################Process 方法
1
abort()
這將導致 node 觸發 abort 事件。會讓 node 退出並生成一個核心檔案。
2
chdir(directory)
改變當前工作程式的目錄,如果操作失敗丟擲異常。
3
cwd()
返回當前程式的工作目錄
4
exit([code])
使用指定的 code 結束程式。如果忽略,將會使用 code 0。
5
getgid()
獲取程式的群組標識(參見 getgid(2))。獲取到得時群組的數字 id,而不是名字。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
6
setgid(id)
設定程式的群組標識(參見 setgid(2))。可以接收數字 ID 或者群組名。如果指定了群組名,會阻塞等待解析為數字 ID 。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
7
getuid()
獲取程式的使用者標識(參見 getuid(2))。這是數字的使用者 id,不是使用者名稱。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
8
setuid(id)
設定程式的使用者標識(參見setuid(2))。接收數字 ID或字串名字。果指定了群組名,會阻塞等待解析為數字 ID 。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
9
getgroups()
返回程式的群組 iD 陣列。POSIX 系統沒有保證一定有,但是 node.js 保證有。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
10
setgroups(groups)
設定程式的群組 ID。這是授權操作,所以你需要有 root 許可權,或者有 CAP_SETGID 能力。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
11
initgroups(user, extra_group)
讀取 /etc/group ,並初始化群組訪問列表,使用成員所在的所有群組。這是授權操作,所以你需要有 root 許可權,或者有 CAP_SETGID 能力。
注意:這個函式僅在 POSIX 平臺上可用(例如,非Windows 和 Android)。
12
kill(pid[, signal])
傳送訊號給程式. pid 是程式id,並且 signal 是傳送的訊號的字串描述。訊號名是字串,比如 `SIGINT` 或 `SIGHUP`。如果忽略,訊號會是 `SIGTERM`。
13
memoryUsage()
返回一個物件,描述了 Node 程式所用的記憶體狀況,單位為位元組。
14
nextTick(callback)
一旦當前事件迴圈結束,呼叫回到函式。
15
umask([mask])
設定或讀取程式檔案的掩碼。子程式從父程式繼承掩碼。如果mask 引數有效,返回舊的掩碼。否則,返回當前掩碼。
16
uptime()
返回 Node 已經執行的秒數。
17
hrtime()
返回當前程式的高分辨時間,形式為 [seconds, nanoseconds]陣列。它是相對於過去的任意事件。該值與日期無關,因此不受時鐘漂移的影響。主要用途是可以通過精確的時間間隔,來衡量程式的效能。
你可以將之前的結果傳遞給當前的 process.hrtime() ,會返回兩者間的時間差,用來基準和測量時間間隔。

###方法例子

// 輸出當前目錄
console.log(`當前目錄:`+process.cwd());

// 輸出當前版本
console.log(`當前版本:`+process.version);

// 輸出記憶體使用情況
console.log(process.memoryUsage());

執行結果:
當前目錄:F:
odejs_code9_global_object
當前版本:v8.11.2
{ rss: 21446656,
  heapTotal: 7159808,
  heapUsed: 4316816,
  external: 8224 }

 

相關文章