NodeJS学习笔记 (27)实用工具模块-util(ok)
debuglog(section)
很有用的调试方法。可以通过 util.debuglog(name) 来创建一个调试fn,这个fn的特点是,只有在运行程序时候,声明环境变量NODE_DEBUG=name,才会打印出调试信息。
可以看下面的例子,直接运行 node debuglog.js,没有任何输出。需要NODE_DEBUG=foo,才会有打印信息.
var util = require('util');
var logger = util.debuglog('foo');
logger('hello');
如下所示,注意,6347 是当前进程id。
➜ 2016.12.02-util git:(master) ✗ NODE_DEBUG=foo node debuglog.js
FOO 6347: hello world
此外,还可以一次指定多个name,通过逗号分隔。
var util = require('util');
var firstLogger = util.debuglog('first');
var secondLogger = util.debuglog('second');
var thirdLogger = util.debuglog('third');
firstLogger('hello');
secondLogger('hello');
thirdLogger('hello');
运行如下:
FOO 6347: hello world
➜ 2016.12.02-util git:(master) ✗ NODE_DEBUG=first,second node debuglog.js
FIRST 6456: hello
SECOND 6456: hello
将方法标识为作废:util.deprecate(fn, str)
将fn包裹一层,并返回一个新的函数fn2。调用fn2时,同样完成fn原有的功能,但同时会打印出错误日志,提示方法已作废,具体的提示信息就是第二个参数str。
var util = require('util');
var foo = function(){
console.log('foo');
};
var foo2 = util.deprecate(foo, 'foo is deprecate');
foo2();
// 输出如下:
// foo
// (node:6608) DeprecationWarning: foo is deprecate
如果嫌错误提示信息烦人,可以通过--no-deprecation参数禁掉,可以参考这里。
➜ 2016.12.02-util git:(master) ✗ node --no-deprecation deprecate.js
foo
格式化打印:util.format(format[, ...args])
格式化打印大家应该比较熟悉了,基本每种语言里都有自己的实现,直接上例子。
var util = require('util');
console.log( util.format('hello %s', 'world') );
// 输出:hello world
console.log( util.format('1 + 1 = %d', 2) );
// 输出:1 + 1 = 2
console.log( util.format('info: %j', {nick: 'chyingp'}) );
// 输出:info: {"nick":"chyingp"}
console.log( util.format('%s is %d age old', 'chyingp') );
// 输出:chyingp is %d age old
console.log( util.format('%s is a man', 'chyingp', 'indeed') );
// 输出:chyingp is a man indeed
调试方法:util.inspect(obj[, options])
非常实用的一个方法,参数说明如下:
- obj:js原始值,或者对象。
- options:配置参数,包含下面选项
- showHidden:如果是true的话,obj的非枚举属性也会被展示出来。默认是false。
- depth:如果obj是对象,那么,depth限制对象递归展示的层级,这对可读性有一定的好处,默认是2。如果设置为null,则不做限制。
- colors:自定义配色方案。
- showProxy:
- maxArrayLength:如果obj是数组,那么限制最大可展示的数组个数。默认是100,如果设置为null,则不做限制。如果设置为0或负数,则一个都不展示。
var util = require('util');
var obj = {};
Object.defineProperty(obj, 'nick', {
enumerable: false,
value: 'chyingp'
});
console.log( util.inspect(obj) );
// 输出:{}
console.log( util.inspect(obj, {showHidden: true}) );
// 输出:{ [nick]: 'chyingp' }
NodeJS学习笔记 (27)实用工具模块-util(ok)的更多相关文章
- NodeJS学习笔记之Connect中间件模块(一)
NodeJS学习笔记之Connect中间件模块(一) http://www.jb51.net/article/60430.htm NodeJS学习笔记之Connect中间件模块(二) http://w ...
- Nodejs学习笔记(三)--- 模块
目录 简介及资料 自定义模块 创建一个自定义模块 调用自定义模块 exports和module.exports 区别 exports和module.exports 覆盖 其它... 简介及资料 通过N ...
- Nodejs学习笔记(三)—模块
简介及资料 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ ,这些核心模块被编译成二进制文件,可以require('模块名') ...
- 【转】Nodejs学习笔记(二)--- 模块
目录 简介及资料 自定义模块 创建一个自定义模块 调用自定义模块 exports和module.exports 区别 exports和module.exports 覆盖 其它... 简介及资料 通过N ...
- nodejs学习笔记之包、模块实现
简单了解了node的安装和一些基本的常识之后,今天学习了node中很重要的包和模块的一些知识点. 首先学习一下包的规范,它由包结构和包描述两部分组成.包结构用于组织包的各种文件,包 ...
- NodeJS学习笔记之Connect中间件模块(二)
一,开篇分析 大家好,今天这篇文章主要是对"Connect"中间件以及相关辅助中间件,做一个源码分析系列,我想上一篇文章大家也看了, 介绍了使用方式及用途,而这篇也是出于本人的兴趣 ...
- NodeJS学习笔记 进阶 (12)Nodejs进阶:crypto模块之理论篇
个人总结:读完这篇文章需要30分钟,这篇文章讲解了使用Node处理加密算法的基础. 摘选自网络 Nodejs进阶:crypto模块之理论篇 一. 文章概述 互联网时代,网络上的数据量每天都在以惊人的速 ...
- Nodejs学习笔记(三)——一张图看懂Nodejs建站
前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
随机推荐
- 高斯滤波及高斯卷积核C++实现
高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,在图像处理的降噪.平滑中应用较多,特别是对抑制或消除服从正态分布的噪声非常有效. 高斯滤波的过程其实就是对整幅图像进行加权平均操作的过程.滤波后图像上每 ...
- 138.安全退出的异常,要用throw 尽量不用exit(0)
#include<iostream> #include<cstdlib> using namespace std; ////非安全退出,结束进程, //C++ 必须释放对象,最 ...
- word2tex之类的问题
首先就是这个word2tex一般是在word和tex文本互相转换的时候用的. 以前win7下用的chikrii忘了使用方法.. 之后再win10下用的excel2tex,但是转换时候总感觉不如word ...
- 我的Java历程_maven配置的心路历程
从github上download了个maven管理的开源项目,接下来随笔下安装maven的心路历程: 异常尴尬的是import进ide之后一个红色的感叹号!震惊!google一下知道了,maven没配 ...
- js语法之条件语句
一.比较操作符 比较操作符包括:等于(==).大于(>).大于等于(>=).小于(<).小于等于(<=).
- ES6学习笔记(二十二)ArrayBuffer
ArrayBuffer ArrayBuffer对象.TypedArray视图和DataView视图是 JavaScript 操作二进制数据的一个接口.它们都是以数组的语法处理二进制数据,所以统称为二进 ...
- CF939F Cutlet (单调队列优化DP)
题目大意:要煎一块有两个面的肉,只能在一段k不相交的时间段$[l_{i},r_{i}]$内翻转,求$2*n$秒后,保证两个面煎的时间一样长时,需要最少的翻转次数,$n<=100000$,$k&l ...
- 线性规划(LP)资料下载
1.学习用PPT harvard gondzio IOE610 mit cxg286 含matlab程序 2.测试库 BPMPD netlib fsu 3.软件测试 BENCHMARKS FOR OP ...
- 使用vuex的流程随笔
1.在建好的vue项目中新建一个vuex文件夹在此文件夹下建一个index.js文件,在此文件下引入vuex 模块(当然需要先npm下载)和vue模块,在引入你所有的自定义的module.js模块(下 ...
- 成都磨子桥技工学校 / 2016届练习区 0003:jubeeeeeat
0003:jubeeeeeat 总时间限制: 1000ms 内存限制: 256000kB 描述 众所周知,LZF很喜欢打一个叫Jubeat的游戏.这是个音乐游戏,游戏界面是4×4的方阵,会根据音乐 ...