Node.js 实用工具
稳定性: 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.styles 和 util.inspect.colors 对象,自定义全局的输出颜色,
util.inspect.styles 和 util.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({})
  // falseutil.isRegExp(object)
如果参数 "object" 是 RegExp 返回 true ,否则返回 false。
var util = require('util');
util.isRegExp(/some regexp/)
  // true
util.isRegExp(new RegExp('another regexp'))
  // true
util.isRegExp({})
  // falseutil.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({})
  // falseutil.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' })
  // falseutil.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 实用工具的更多相关文章
- 2015年最佳的15个 Node.js 开发工具
		Node.js 越来月流行,这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ... 
- 推荐15个月 Node.js 开发工具
		Node.js 越来月流行.这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中.我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ... 
- 推荐近期15个 Node.js 开发工具
		近来Node.js 越来月流行了,这个基于Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中,我们列出了2015年最佳的15个 Node.js 开发工具.这些 ... 
- Node.js 常用工具
		Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.inherits util.inherit ... 
- Node.js 常用工具util包
		Node.js 常用工具 util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心JavaScript 的功能 过于精简的不足. util.isError(obj); util.is ... 
- 我用的一些Node.js开发工具、开发包、框架等总结
		开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ... 
- Node.js 小工具--supervisor
		Node.js 在写文件的时候 一旦更改.每次都得重新运行 app.js. 很麻烦. supervisor 工具可以帮助你 监听文件改动,自动重启. sudo npm install -g super ... 
- Node.js开发工具、开发包、框架等总结
		开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢.2.做些小型项目用Sublime Text.3.Browserif ... 
- Node.js实用知识点
		本文介绍如何使用nodejs 简单的HttpServer 调试nodejs 基础路由 nodejs配置开发和生产环境 nodejs核心模块一览 express用法 文件I/O nodejs模块 nod ... 
随机推荐
- Java中的变量数据类型补充
			Java中变量的数据类型的补充 变量按照数据类型进行分类 1.基本数据类型 数值型:①整数类型(byte,short,int,long)②浮点型(float,doubbe)③字符型(char)④布尔型 ... 
- QT-第一个程序 Hello QT , 以及QT creator介绍
			第一个程序 - Hello QT 首先写main.cpp: #include <QApplication> #include <QMainWindow> #include &l ... 
- C++因继承引发的隐藏与重写
			在区分隐藏和重写之前,先来理一理关于继承的东西... [继承] 继承是面向对象复用的重要手段.通过继承定义一个类,继承是类型之间的关系建模,共享公有的东西,实现各自本质不同的东西.简单的说,继承就是指 ... 
- 关于手机APP开发的一些常见误解
			移动应用不适用于小型企业和创业公司 如果你想要开发一款移动APP,那么在前期开发一种偏见的态度并不是一个好主意.如果你认为移动APP只有跨国公司和大企业创业者才会去开发,那么你可能错过了成功的捷径.而 ... 
- [LeetCode] Split Array into Consecutive Subsequences 将数组分割成连续子序列
			You are given an integer array sorted in ascending order (may contain duplicates), you need to split ... 
- mser 最大稳定极值区域(文字区域定位)算法 附完整C代码
			mser 的全称:Maximally Stable Extremal Regions 第一次听说这个算法时,是来自当时部门的一个同事, 提及到他的项目用它来做文字区域的定位,对这个算法做了一些优化. ... 
- Event 发布与订阅(一)
			前言 主要讲的是发布与订阅在Event中的一个简单实现用来加深理解. C #中的事件(Event)的理解: 事件具有以下属性:(From Events) 发行者确定何时引发事件:订户确定对事件作出何种 ... 
- [NOI2015]品酒大会
			题目描述 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战 两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainb ... 
- [BZOJ1977]严格次小生成树
			[问题描述] 小C最近学了很多最小生成树的算法,Prim算法.Kurskal算法.消圈算法等等. 正当小C洋洋得意之时,小P又来泼小C冷水了.小P说,让小C求出一个无向图的次小生成树,而且这个次小生成 ... 
- UVALive - 3026:Period
			用KMP里面的next数组即可,原理就是next数组的原理 #include<cstdio> #include<cstdlib> #include<algorithm&g ... 
