稳定性: 4 - 锁定

这些函数都在'util' 模块里。使用 require('util') 来访问他们。

util 模块原先设计的初衷是用来支持 node 的内部 API 的。这里的很多的函数对你的程序来说都非常有用。如果你觉得这些函数不能满足你的要求,那你可以写自己的工具函数。我们不希望 'util' 模块里添加对于 node 内部函数无用的扩展。

util.debuglog(section)

  • section {字符串} 被调试的程序节点部分
  • Returns: {Function} 日志函数

用来创建一个有条件的写到 stderr 的函数(基于 NODE_DEBUG 环境变量)。如果 section 出现在环境变量里,返回函数将会和 console.error() 类似。否则,返回一个空函数。

例如:

javascript
var debuglog = util.debuglog('foo'); var bar = 123;
debuglog('hello from foo [%d]', bar);

如果这个程序以 NODE_DEBUG=foo 的环境运行,将会输出:

FOO 3245: hello from foo [123]

3245 是进程 ID。如果没有运行在这个环境变量里,将不会打印任何东西。

可以用逗号切割多个 NODE_DEBUG 环境变量。例如:NODE_DEBUG=fs,net,tls

util.format(format[, ...])

使用第一个参数返回一个格式化的字符串,类似 printf

第一个参数是字符串,它包含 0 或更多的占位符。每个占位符被替换成想要参数转换的值。支持的占位符包括:

  • %s - 字符串.
  • %d - 数字 (整数和浮点数).
  • %j - JSON. 如果参数包含循环引用,将会用字符串替换R
  • %% - 单独一个百分号 ('%')。 不会消耗一个参数。

如果占位符没有包含一个相应的参数,占位符不会被替换。

util.format('%s:%s', 'foo'); // 'foo:%s'

如果参数超过占位符,多余的参数将会用 util.inspect() 转换成字符串,并拼接在一起,用空格隔开。

util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'

如果第一个参数不是格式化字符串,那么 util.format() 会返回所有参数拼接成的字符串(空格分割)。每个参数都会用 util.inspect() 转换成字符串。

util.format(1, 2, 3); // '1 2 3'

util.log(string)

stdout 输出并带有时间戳.

require('util').log('Timestamped message.');

util.inspect(object[, options])

返回一个对象的字符串表现形式,在代码调试的时候非常有用。

通过加入一些可选选项,来改变对象的格式化输出形式:

  • showHidden - 如果为 true,将会显示对象的不可枚举属性。默认为 false

  • depth - 告诉 inspect 格式化对象时递归多少次。这在格式化大且复杂对象时非常有用。默认为 2。如果想无穷递归的话,传 null

  • colors - 如果为 true, 输出内容将会格式化为有颜色的代码。默认为 false, 颜色可以自定义,参见下文。

  • customInspect - 如果为 false, 那么定义在被检查对象上的inspect(depth, opts) 方法将不会被调用。 默认为true。

检查 util 对象上所有属性的例子:

var util = require('util');

console.log(util.inspect(util, { showHidden: true, depth: null }));

当被调用的时候,参数值可以提供自己的自定义inspect(depth, opts)方法。该方法会接收当前的递归检查深度,以及传入util.inspect()的其他参数。

自定义 util.inspect 颜色

util.inspect 通过 util.inspect.stylesutil.inspect.colors 对象,自定义全局的输出颜色,

util.inspect.stylesutil.inspect.colors 组成风格颜色的一对映射。

高亮风格和他们的默认值:

  • 数字 (黄色)
  • boolean (黄色)
  • 字符串 (绿色)
  • date (洋红)
  • regexp (红色)
  • null (粗体)
  • undefined (斜体)
  • special - (青绿色)
  • name (内部用,不是风格)

预定义的颜色为: white, 斜体, black, blue, cyan,绿色, 洋红, 红色黄色.以及 粗体, 斜体, 下划线反选 风格.

对象上德自定义 inspect() 函数

对象也能自定义 inspect(depth) 函数, 当使用util.inspect()检查该对象的时候,将会执行对象自定义的检查方法:

var util = require('util');

var obj = { name: 'nate' };
obj.inspect = function(depth) {
return '{' + this.name + '}';
}; util.inspect(obj);
// "{nate}"

你可以返回另外一个对象,返回的字符串会根据返回的对象格式化。这和 JSON.stringify() 的工作流程类似。You may also return another Object entirely, and the returned 字符串 will beformatted according to the returned Object. This is similar to howJSON.stringify() works:

var obj = { foo: 'this will not show up in the inspect() output' };
obj.inspect = function(depth) {
return { bar: 'baz' };
}; util.inspect(obj);
// "{ bar: 'baz' }"

util.isArray(object)

Array.isArray 的内部别名。

如果参数 "object" 是数组,返回 true ,否则返回 false

var util = require('util');

util.isArray([])
// true
util.isArray(new Array)
// true
util.isArray({})
// false

util.isRegExp(object)

如果参数 "object" 是 RegExp 返回 true ,否则返回 false

var util = require('util');

util.isRegExp(/some regexp/)
// true
util.isRegExp(new RegExp('another regexp'))
// true
util.isRegExp({})
// false

util.isDate(object)

如果参数 "object" 是 Date 返回 true ,否则返回 false

var util = require('util');

util.isDate(new Date())
// true
util.isDate(Date())
// false (without 'new' returns a String)
util.isDate({})
// false

util.isError(object)

如果参数 "object" 是 Error 返回 true ,否则返回 false

var util = require('util');

util.isError(new Error())
// true
util.isError(new TypeError())
// true
util.isError({ name: 'Error', message: 'an error occurred' })
// false

util.inherits(constructor, superConstructor)

从一个构造函数constructor继承原型方法到另一个。构造函数的原型将被设置为一个新的从超类(superConstructor)创建的对象。

通过 constructor.super_ 属性可以访问 superConstructor

var util = require("util");
var events = require("events"); function MyStream() {
events.EventEmitter.call(this);
} util.inherits(MyStream, events.EventEmitter); MyStream.prototype.write = function(data) {
this.emit("data", data);
} var stream = new MyStream(); console.log(stream instanceof events.EventEmitter); // true
console.log(MyStream.super_ === events.EventEmitter); // true stream.on("data", function(data) {
console.log('Received data: "' + data + '"');
})
stream.write("It works!"); // Received data: "It works!"

util.deprecate(function, string)

标明该方法不要再使用。

exports.puts = exports.deprecate(function() {
for (var i = 0, len = arguments.length; i < len; ++i) {
process.stdout.write(arguments[i] + '\n');
}
}, 'util.puts: Use console.log instead')

返回一个修改过的函数,默认情况下仅警告一次。如果设置了 --no-deprecation 该函数不做任何事。如果设置了--throw-deprecation,如果使用了该 API 应用将会抛出异常

util.debug(string)

稳定性: 0 - 抛弃: 使用 console.error() 替换。

console.error 的前身。

util.error([...])

稳定性: 0 - 抛弃: 使用 console.error() 替换。

console.error 的前身。

util.puts([...])

稳定性: 0 - 抛弃:使用 console.log() 替换。

console.log 的前身。

util.print([...])

稳定性: 0 - 抛弃: 使用 console.log() 替换。

console.log 的前身。

util.pump(readableStream, writableStream[, callback])

稳定性: 0 - 抛弃: Use readableStream.pipe(writableStream)

stream.pipe 的前身。

Node.js 实用工具的更多相关文章

  1. 2015年最佳的15个 Node.js 开发工具

    Node.js 越来月流行,这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...

  2. 推荐15个月 Node.js 开发工具

    Node.js 越来月流行.这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中.我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...

  3. 推荐近期15个 Node.js 开发工具

    近来Node.js 越来月流行了,这个基于Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些 ...

  4. Node.js 常用工具

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ...

  5. Node.js 常用工具util包

    Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ...

  6. 我用的一些Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ...

  7. Node.js 小工具--supervisor

    Node.js 在写文件的时候 一旦更改.每次都得重新运行 app.js. 很麻烦. supervisor 工具可以帮助你 监听文件改动,自动重启. sudo npm install -g super ...

  8. Node.js开发工具、开发包、框架等总结

    开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢.2.做些小型项目用Sublime Text.3.Browserif ...

  9. Node.js实用知识点

    本文介绍如何使用nodejs 简单的HttpServer 调试nodejs 基础路由 nodejs配置开发和生产环境 nodejs核心模块一览 express用法 文件I/O nodejs模块 nod ...

随机推荐

  1. mysql 存储过程 实现数据同步

    数据库 表 发生变化,需要把2.0的表数据 同步到3.0库中去: -- 同步数据存储过程执行 -- 更新留言旧表数据到新表数据中 /*DEFINER:Vector*/ drop procedure i ...

  2. centos单机安装zookeeper+kafaka

    环境如下: CentOS-7-x86_64zookeeper-3.4.11kafka_2.12-1.1.0 一.zookeeper下载与安装1)下载zookeeper [root@localhost ...

  3. PageRank之基于C C#的基本实现

    重点不是说PageRank是什么,而是怎么用代码实现 什么是PageRank? PageRank,网页排名,又称网页级别.Google左侧排名或佩奇排名,是一种由[1]  根据网页之间相互的超链接计算 ...

  4. html标记语言 --文本标记

    html标记语言 --文本标记 二.文本标记 1.h1-h6 标题标记,h1最大 2.font 字体设置标记 2.1 size字体大小.<font size="> 取值范围1-7 ...

  5. 对return函数的认识

    例1: def funOut(): def funIn(): print('宾果!你成功访问到我啦!') return funIn() #注意这里return的是funIn()即是一个函数 funOu ...

  6. FTP方式发布webservice

    以前我发布webservice的步骤是:在  C:\inetpub\wwwroot\路径下发布webservice,然后再在IIS中添加网站并制定路径,这样每次发布了webservice后,需要把发布 ...

  7. [LeetCode] Super Washing Machines 超级洗衣机

    You have n super washing machines on a line. Initially, each washing machine has some dresses or is ...

  8. HashMap 你真的了解吗?

    HashMap深入解析及详细介绍 一. hashmap简介 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特 ...

  9. servlet之重写

    package app02a;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;impo ...

  10. bzoj 5297: [Cqoi2018]社交网络

    Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息 (例如微博.状态.Tweet等)后,他的好友们也可以看见这条消息,并可能转 ...