Node.js中process模塊常用的屬性和方法
前言
雖然node對(duì)操作系統(tǒng)做了很多抽象的工作,但是你還是可以直接和他交互,比如和系統(tǒng)中已經(jīng)存在的進(jìn)程進(jìn)行交互,創(chuàng)建工作子進(jìn)程。node是一個(gè)用于事件循環(huán)的線程,但是你可以在這個(gè)事件循環(huán)之外創(chuàng)建其他的進(jìn)程(線程)參與工作。
如果不是和命令行工具打交道,可能我們很少有機(jī)會(huì)去用到process模塊中的一些方法或者屬性。不過(guò)如果你要做類似于webpack或者gulp等較為復(fù)雜的構(gòu)建工具,由于bash界面就是和用戶直接交流的工具,因此友好的輸入輸出,完整的提示都非常有必要了。
屬性
一張表格大概可以看到process有哪些屬性
屬性名稱 | 用途 |
platform | 判斷當(dāng)前系統(tǒng)平臺(tái) |
argv | 當(dāng)前進(jìn)程的命令行參數(shù)數(shù)組 |
execPath | 當(dāng)前進(jìn)程的可執(zhí)行文件的絕對(duì)路徑 |
stdout | 指向標(biāo)準(zhǔn)輸出 |
stdin | 指向標(biāo)準(zhǔn)輸入 |
stderr | 指向標(biāo)準(zhǔn)錯(cuò)誤 |
stderr | 指向標(biāo)準(zhǔn)錯(cuò)誤 |
我們可以直接在代碼中這樣使用
console.log(porcess.platform) // darwin
使用argv 會(huì)返回命令行的數(shù)組,我們可以通過(guò)數(shù)組來(lái)獲取用戶具體的命令
console.log(process.argv); // [ '/usr/local/bin/node', '/Users/ali-130257n/www/weex-jackzoo/projects/demo.js', '-p', '-v' ]
一般情況下,我們更想獲取最后的一些參數(shù),前面兩個(gè)不需要,我們可以
let args = process.argv.slice(2); console.log(args) // [ '-p', '-v' ]
方法
process 提供的方法有很多。大致我們可以用到的有下面一些。
cwd
:返回運(yùn)行當(dāng)前腳本的工作目錄的路徑
abort
:立即結(jié)束進(jìn)程
nextTick
: 指定下次事件循環(huán)首先運(yùn)行的任務(wù)
process 支持的一些事件,通過(guò)一些事件,我們可做一些友好的提示或者處理。
uncaughtException
:當(dāng)前進(jìn)程拋出一個(gè)沒有被捕捉的意外時(shí),會(huì)觸發(fā)uncaughtException事件
message
: 接受來(lái)自父進(jìn)程的消息
rejectionHandled
:用于捕獲與它關(guān)聯(lián)的promise錯(cuò)誤處理并且產(chǎn)生的reject
unhandledRejection
: 同理這個(gè)便是用于捕獲沒有與之關(guān)聯(lián)promise錯(cuò)誤處理的reject
const unhandledRejections = new Map(); process.on('unhandledRejection', (reason, p) => { unhandledRejections.set(p, reason); }); process.on('rejectionHandled', (p) => { unhandledRejections.delete(p); });
warning: 當(dāng)前進(jìn)程產(chǎn)生一個(gè)警告的時(shí)候出發(fā)
process.on('warning', (warning) => { console.warn(warning.name); // Print the warning name console.warn(warning.message); // Print the warning message console.warn(warning.stack); // Print the stack trace });
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
使用node-media-server搭建一個(gè)簡(jiǎn)易的流媒體服務(wù)器
這篇文章主要介紹了使用node-media-server搭建一個(gè)簡(jiǎn)易的流媒體服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01webpack打包、編譯、熱更新Node內(nèi)存不足問(wèn)題解決
Webpack是現(xiàn)在主流的功能強(qiáng)大的模塊化打包工具,在使用Webpack時(shí),如果不注意性能優(yōu)化,有非常大的可能會(huì)產(chǎn)生性能問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于webpack打包、編譯、熱更新Node內(nèi)存不足問(wèn)題解決的相關(guān)資料,需要的朋友可以參考下2023-03-03詳解HTTPS 的原理和 NodeJS 的實(shí)現(xiàn)
這篇文章主要介紹了詳解HTTPS 的原理和 NodeJS 的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07windows實(shí)現(xiàn)npm和cnpm安裝步驟
這篇文章主要介紹了windows實(shí)現(xiàn)npm和cnpm安裝步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10node.js express框架簡(jiǎn)介與實(shí)現(xiàn)
這篇文章主要介紹了node.js express框架簡(jiǎn)介與實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07nodejs控制臺(tái)打印高亮代碼的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于nodejs控制臺(tái)打印高亮代碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05socket.io學(xué)習(xí)教程之深入學(xué)習(xí)篇(三)
這篇文章更加深入的給大家介紹了socket.io的相關(guān)資料,之前已經(jīng)介紹了socket.io的基本教程和應(yīng)用,本文更為深入的來(lái)介紹下socket.io的使用,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-04-04