node系列之util

地址

传送门

说明

nodejs的一些工具类,不过从文档来看,好多都已经作废了,很多判断数据类型的方法已经迁移交由该数据类型自己来判断。比如 util.isArray(object)方法即将弃用,取而代之的是Array.isArray(object)。同样的例子还有很多,isBooleanisNumber等等。

尚未抛弃的方法

  • util.debuglog(section)
    类似于debug模块的做法。
const util = require('util');
const debuglog = util.debuglog('foo');
debuglog('hello from foo [%d]', 123);

运行的时候要指定环境变量NODE_DEBUG=foo

FOO 3245: hello from foo [123]

3245是当前进程id。如果有需要,可以指定多个值(用逗号隔开)。NODE_DEBUG=fs,net,tls

  • util.deprecate
    封装了一个方法,并且还会有相应的提示。一般都是提示不要使用此方法等等。
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');

当调用func方法的时候,会提示你是用console.log来替换。
在你设计的api里,假如有部分需要平滑过渡的话,可以使用这个 deprecate来提示调用方。

  • util.format
    格式化。返回一个格式化后的字符串

  • util.inherits(constructor, superConstructor)
    这个用得可能相对来说会多一点:继承。
    官方貌似比较推荐的是es2015的语法糖classextends
    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])
    将一个对象转换成字符串,通常用于调试和错误输出(我没有用过这个方法。。。)。有兴趣开始简单地使用这个方法输出一下。
console.log(util.inspect(util, { showHidden: true, depth: null }));

即将弃用的方法

我就不说了,既然官方都不推荐了,那就随风消去吧。

小结

这个模块我用得不多,主要是继承会偶尔用上。

你可能感兴趣的:(node系列之util)