地址
說明
nodejs的一些工具類朵逝,不過從文檔來看,好多都已經(jīng)作廢了配名,很多判斷數(shù)據(jù)類型的方法已經(jīng)遷移交由該數(shù)據(jù)類型自己來判斷。比如 util.isArray(object)
方法即將棄用渠脉,取而代之的是Array.isArray(object)
宇整。同樣的例子還有很多芋膘,isBoolean
、isNumber
等等为朋。
尚未拋棄的方法
- util.debuglog(section)
類似于debug
模塊的做法。
const util = require('util');
const debuglog = util.debuglog('foo');
debuglog('hello from foo [%d]', 123);
運行的時候要指定環(huán)境變量NODE_DEBUG=foo
FOO 3245: hello from foo [123]
3245是當前進程id习寸。如果有需要胶惰,可以指定多個值(用逗號隔開)霞溪。NODE_DEBUG=fs,net,tls
。
- util.deprecate
封裝了一個方法鸯匹,并且還會有相應(yīng)的提示。一般都是提示不要使用此方法等等忽你。
var func = util.deprecate(function() {
for (var i = 0, len = arguments.length; i < len; ++i) {
process.stdout.write(arguments[i] + '\n');
}
}, 'util.puts: Use console.log instead');
當調(diào)用func方法的時候,會提示你是用console.log
來替換科雳。
在你設(shè)計的api里根蟹,假如有部分需要平滑過渡的話糟秘,可以使用這個 deprecate
來提示調(diào)用方。
util.format
格式化尿赚。返回一個格式化后的字符串util.inherits(constructor, superConstructor)
這個用得可能相對來說會多一點:繼承蕉堰。
官方貌似比較推薦的是es2015的語法糖class
和extends
。
util.inherits
const util = require('util');
const EventEmitter = require('events');
function MyStream() {
EventEmitter.call(this);
}
util.inherits(MyStream, EventEmitter);
MyStream.prototype.write = function(data) {
this.emit('data', data);
};
const stream = new MyStream();
console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true
stream.on('data', (data) => {
console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"
es2015
const util = require('util');
const EventEmitter = require('events');
class MyStream extends EventEmitter {
constructor() {
super();
}
write(data) {
this.emit('data', data);
}
}
const stream = new MyStream();
stream.on('data', (data) => {
console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
可以看出屋讶,兩種效果其實是一樣的。而且须教,es2016的例子,看起來會簡介一些轻腺。
- util.inspect(object[, options])
將一個對象轉(zhuǎn)換成字符串,通常用于調(diào)試和錯誤輸出(我沒有用過這個方法贬养。挤土。误算。)。有興趣開始簡單地使用這個方法輸出一下尉桩。
console.log(util.inspect(util, { showHidden: true, depth: null }));
即將棄用的方法
我就不說了贪庙,既然官方都不推薦了,那就隨風消去吧止邮。
小結(jié)
這個模塊我用得不多这橙,主要是繼承會偶爾用上导披。