13、Node.js 全局對象

来源:https://www.cnblogs.com/-nbloser/archive/2018/07/13/9306850.html
-Advertisement-
Play Games

主要用於調試,顯示信息,重點看例子在瀏覽器 JavaScript 中,通常 window 是全局對象, Node.js 中的全局對象是 global####__filename__filename 表示當前正在執行的腳本的文件名。它將輸出文件所在位置的絕對路徑,且和命令行參數所指定的文件名不一定相同 ...


主要用於調試,顯示信息,重點看例子
在瀏覽器 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'+'\n');

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

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

// 平臺信息
console.log(process.platform);


執行結果:
love
0:D:\Program Files\nodejs\node.exe
1:F:\nodejs_code\9_global_object\4_process_properties.js
D:\Program Files\nodejs\node.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:\nodejs_code\9_global_object
當前版本:v8.11.2
{ rss: 21446656,
  heapTotal: 7159808,
  heapUsed: 4316816,
  external: 8224 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引言 學習《android第一行代碼》根據書本開發的天氣預報app,主要用於熟練操作android開發(android studio3.0平臺)。 今天主要分享一下從伺服器上獲取天氣信息,通過ListView綁定數據的操作(可以採用RecycleView),然後進行頁面點擊跳轉。 一、 伺服器返回數 ...
  • 這篇文章的重點不在於說是對終端語法的講解,而是方便大家做語法備忘. 方便查找對應終端語法.所以使用了表格形式對常用終端語法進行了彙總, 但是並沒有很多的講解部分. 當然了這裡記錄的也都是十分基礎的語法部分, 我相信大家都是可以看得懂的,畢竟大家都是十分優秀的程式猿哦~ 路徑相關 指令表示含義 pwd ...
  • Android自帶的語音播報+訊飛語音播報封裝(直接用)。 涉及功能: 1.多個許可權申請 2.自帶語音實現 3.訊飛語音播報封裝... ...
  • index代碼: 參考資料:《菜鳥教程》 ...
  • 效果如下: ...
  • 今天在學習angularjs的分頁插件時遇到了一個前端的問題,谷歌瀏覽器開發者模式調試的時候發現每次點擊分頁刷新按鈕會觸發兩次後臺請求,ajax向後臺發送了兩次請求,這對於強迫症患者來說是一個比較噁心和感到不舒服的事情。 於是在網上也找到了靠譜的解決方案:http://jqvue.com/tm.pa ...
  • 在IT界已經混了5年了,5年中瀏覽了不少的網站,在上面查詢自己想要的東西,解決工作中遇到的問題,心裡總想有天自己能夠有自己的博客,能給分享一些自己在生活中、工作中遇到的問題,讓其他有類似經歷的朋友能夠少走彎路,今天終於鼓起勇氣在博客園寫下第一篇隨筆。其他不做過多的介紹,下麵將介紹今天在工作中遇到的一 ...
  • 全局安裝是把包安裝在Node安裝目錄下的node_modules文件夾中,一般在 \Users\用戶名\AppData\Roaming\ 目錄下,可以使用npm root -g查看全局安裝目錄 本地(局部)安裝是把包安裝在指定項目(要在指定的根目錄下輸入命令)的node_modules文件夾下(若沒 ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...