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 }));

即将弃用的方法

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

小结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,369评论 19 139
  • 共14+1个小点 最后一个点是socket 很简单 概念: //并行是指两个或者多个事件在同一时刻发生;而并发是指...
    贝灬小晖阅读 1,521评论 0 1
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 11,501评论 0 6
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 7,192评论 1 37
  • Node.js Stream(流) Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对h...
    FTOLsXD阅读 3,746评论 0 2