Node.js中的process對象是什么

這篇文章主要介紹了Node.js中的process對象是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)10年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:攪拌罐車等企業(yè),備受客戶贊賞。

process 對象是一個全局變量,是一個 EventEmitter 實(shí)例,提供了當(dāng)前 Node.js 進(jìn)程的信息和操作方法

系統(tǒng)信息

process 對象提供了屬性用于返回關(guān)鍵系統(tǒng)信息,常用的有

  • title:進(jìn)程名稱,默認(rèn)值 node,程序可以修改,可以讓錯誤日志更清晰
  • pid:當(dāng)前進(jìn)程 pid
  • ppid:當(dāng)前進(jìn)程的父進(jìn)程 pid
  • platform:運(yùn)行進(jìn)程的操作系統(tǒng)(aix、drawin、freebsd、linux、openbsd、sunos、win32)
  • version:Node.js 版本
  • env:當(dāng)前Shell的所有環(huán)境變量

stdin & stdout

Node.js 和標(biāo)準(zhǔn)輸入、輸出設(shè)備交互對象也通過 process 對象提供

process.stdin.pipe(process.stdout)

簡單一行代碼可以實(shí)現(xiàn)把控制臺輸入內(nèi)容在控制臺原樣打印出來

執(zhí)行信息

process.execPath

process.execPath 屬性返回執(zhí)行當(dāng)前腳本的 Node 二進(jìn)制文件的絕對路徑

process.argv

process.argv 屬性返回一個數(shù)組,內(nèi)容是執(zhí)行腳本時的參數(shù),但數(shù)組前兩個固定

  • 執(zhí)行當(dāng)前腳本的 Node 二進(jìn)制文件的絕對路徑

  • 當(dāng)前執(zhí)行文件絕對路徑

process.js

console.log(process.argv);
node process.js a --b=2

[
  '/usr/local/bin/node',
  '/Users/undefined/node-demo/process.js',
  'a',
  '--b=2'
]

process.execArgv

process.execArgv 屬性返回一個數(shù)組,成員是命令行下執(zhí)行腳本時,在 Node 可執(zhí)行文件與腳本文件之間的命令行參數(shù)

process.js

console.log(process.execArgv);
node --inspect process.js

[ '--inspect' ]

常用操作方法

  • process.chdir():切換工作目錄到指定目錄
  • process.cwd():返回運(yùn)行當(dāng)前腳本的工作目錄的路徑,也就是執(zhí)行 node 命令時候的目錄
  • process.exit():退出當(dāng)前進(jìn)程
  • process.memoryUsage():返回 Node.js 進(jìn)程的內(nèi)存使用情況

進(jìn)程事件

process 對象是 EventEmitter 對象實(shí)例,可以監(jiān)聽一些系統(tǒng)核心事件, 常使用的有

exit

當(dāng) Node.js 進(jìn)程因以下原因之一即將退出時,則會觸發(fā) exit 事件:

  • 顯式調(diào)用 process.exit() 方法
  • Node.js 事件循環(huán)不再需要執(zhí)行任何其他工作

此時無法阻止退出事件循環(huán),并且一旦所有 exit 事件的監(jiān)聽器都已完成運(yùn)行時,Node.js 進(jìn)程將終止

process.on('exit', (code) => {
  console.log(`退出碼: ${code}`);
});

uncaughtException

當(dāng)前進(jìn)程拋出一個沒有被捕捉的錯誤時,會觸發(fā)uncaughtException事件

process.on('uncaughtException', function (err) {
  console.error(err.stack);
});

beforeExit

當(dāng) Node.js 清空其事件循環(huán)并且沒有其他工作要安排時,會觸發(fā) beforeExit 事件。 通常 Node.js 進(jìn)程將在沒有調(diào)度工作時退出,但是在 beforeExit 事件上注冊的監(jiān)聽器可以進(jìn)行異步調(diào)用使 Node.js 進(jìn)程繼續(xù)

process.on('beforeExit', (code) => {
  console.log('進(jìn)程 beforeExit 事件的代碼: ', code);
});

process.on('exit', (code) => {
  console.log('進(jìn)程 exit 事件的代碼: ', code);
});

console.log('此消息最新顯示');

// 打印:
// 此消息最新顯示
// 進(jìn)程 beforeExit 事件的代碼: 0
// 進(jìn)程 exit 事件的代碼: 0

message

如果使用 IPC 通道 fork Node.js 進(jìn)程,子進(jìn)程收到父進(jìn)程使用 childprocess.send() 發(fā)送的消息,就會觸發(fā) message 事件

process.on('message', (m) => {
  console.log('子進(jìn)程收到消息', m);
});

process.nextTick(callback)

process.nextTick() 方法將 callback 添加到下一個時間點(diǎn)的隊(duì)列執(zhí)行

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Node.js中的process對象是什么內(nèi)容對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來學(xué)習(xí)!

文章題目:Node.js中的process對象是什么
分享路徑:http://www.muchs.cn/article30/ghjpso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開發(fā)網(wǎng)站維護(hù)、手機(jī)網(wǎng)站建設(shè)營銷型網(wǎng)站建設(shè)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)