Node.js | Util(常用工具)
簡介
該util
模組主要旨在滿足Node.js
自己內部API
的需求。但是,許多實用程序對應用程序和模組開發人員也很有用。
可以使用以下指令訪問它:
1 | const util = require('util'); |
註:詳細Doc Link
util.callbackify
- original <功能>的async功能
- 返回:
回調樣式函數
接受一個async
函數(或Promise
返回的函數)並按照錯誤優先的回調樣式返回函數,即以(err, value) => ...
回調作為最後一個參數。在回調中,第一個參數將是拒絕原因(或null
如果已Promise
解決),第二個參數將是已解決的值。
1 | const util = require('util'); |
執行結果如下:
1 | $ node main.js |
回調是異步執行的,並且將具有有限的堆棧跟踪。如果引發了回調,則進程將發出一個'uncaughtException'
事件,如果未處理,則退出。
由於null
作為回調的第一個參數具有特殊含義,因此如果包裝函數拒絕將Promisea
的值為偽造的a
值,則該值將被包裝為in Error
,原始值存儲在名為的字段中reason
。
1 | const util = require('util'); |
util.inherits
util.inherits(constructor, superConstructor)
是一個實現對象間原型繼承的函數。
JavaScript
的面向對象特性是基於原型的,與常見的基於類的不同。JavaScript
沒有提供對象繼承的語言級別特性,而是通過原型複制來實現的。
1 | var util = require('util'); |
執行結果如下:
1 | $ node main.js |
注意,Sub
僅僅繼承了Base
在原型中定義的函數,而構造函數內部創造的base
屬性和sayHello
函數都沒有被Sub
繼承。
同時,在原型中定義的屬性不會被console.log
作為對象的屬性輸出。
如果我們去掉objSub.sayHello();
這行的註釋。
執行結果如下:
1 | $ node main.js |
util.inspect
util.inspect(object,[showHidden],[depth],[colors])
是一個將任意對象轉換為字符串的方法,通常用於調試和錯誤輸出。它至少接受一個參數object
,即要轉換的對象。
showHidden
是一個可選參數,如果值為true
,將會輸出更多隱藏訊息。
depth
表示最大遞歸的層數,如果對像很複雜,你可以指定層數以控制輸出訊息的多少。如果不指定depth
,默認會遞歸2
層,指定為null
表示將不限遞歸層數完整遍歷對象。如果colors
值為true
,輸出格式將會以ANSI
顏色編碼,通常用於在終端顯示更漂亮的效果。
特別要指出的是,util.inspect
並不會簡單地直接把對象轉換為字符串,即使該對象定義了toString
方法也不會調用。
1 | var util = require('util'); |
執行結果如下:
1 | $ node main.js |
util.isArray(object)
如果給定的參數object
是一個數組返回true
,否則返回false
。
1 | var util = require('util'); |
執行結果如下:
1 | $ node main.js |
util.isRegExp(object)
如果給定的參數object
是一個正則表達式返回true
,否則返回false
。
1 | var util = require('util'); |
執行結果如下:
1 | $ node main.js |
util.isDate(object)
如果給定的參數object"
是一個日期返回true
,否則返回false
。
1 | var util = require('util'); |
執行結果如下:
1 | $ node main.js |
總結
還有很多很好用的API
這邊並沒有辦法全部列出來,建議可以直接看Node.js Util Documentation,這邊列出截至2020-01-21
的Util.API
清單。
- Util
- util.callbackify(original)
- util.debuglog(section)
- util.deprecate(fn, msg[, code])
- util.format(format[, …args])
- util.formatWithOptions(inspectOptions, format[, …args])
- util.getSystemErrorName(err)
- util.inherits(constructor, superConstructor)
- util.inspect(object[, options])
- util.inspect(object[, showHidden[, depth[, colors]]])
- Customizing util.inspect colors
- Modifiers
- Foreground colors
- Background colors
- Custom inspection functions on Objects
- util.inspect.custom
- util.inspect.defaultOptions
- util.isDeepStrictEqual(val1, val2)
- util.promisify(original)
- Custom promisified functions
- util.promisify.custom
- Class: util.TextDecoder
- WHATWG Supported Encodings
- Encodings Supported by Default (With Full ICU Data)
- Encodings Supported when Node.js is built with the small-icu option
- Encodings Supported when ICU is disabled
- new TextDecoder([encoding[, options]])
- textDecoder.decode([input[, options]])
- textDecoder.encoding
- textDecoder.fatal
- textDecoder.ignoreBOM
- Class: util.TextEncoder
- textEncoder.encode([input])
- textEncoder.encodeInto(src, dest)
- textEncoder.encoding
- util.types
- util.types.isAnyArrayBuffer(value)
- util.types.isArgumentsObject(value)
- util.types.isArrayBuffer(value)
- util.types.isAsyncFunction(value)
- util.types.isBigInt64Array(value)
- util.types.isBigUint64Array(value)
- util.types.isBooleanObject(value)
- util.types.isBoxedPrimitive(value)
- util.types.isDataView(value)
- util.types.isDate(value)
- util.types.isExternal(value)
- util.types.isFloat32Array(value)
- util.types.isFloat64Array(value)
- util.types.isGeneratorFunction(value)
- util.types.isGeneratorObject(value)
- util.types.isInt8Array(value)
- util.types.isInt16Array(value)
- util.types.isInt32Array(value)
- util.types.isMap(value)
- util.types.isMapIterator(value)
- util.types.isModuleNamespaceObject(value)
- util.types.isNativeError(value)
- util.types.isNumberObject(value)
- util.types.isPromise(value)
- util.types.isProxy(value)
- util.types.isRegExp(value)
- util.types.isSet(value)
- util.types.isSetIterator(value)
- util.types.isSharedArrayBuffer(value)
- util.types.isStringObject(value)
- util.types.isSymbolObject(value)
- util.types.isTypedArray(value)
- util.types.isUint8Array(value)
- util.types.isUint8ClampedArray(value)
- util.types.isUint16Array(value)
- util.types.isUint32Array(value)
- util.types.isWeakMap(value)
- util.types.isWeakSet(value)
- util.types.isWebAssemblyCompiledModule(value)
註:以上參考了
Node.js 常用工具