zoukankan      html  css  js  c++  java
  • 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' }
  • 相关阅读:
    Strust2学习笔记
    EL与OGNL区别
    十进制与其他进制转换
    JSTL
    <jsp:include>和<%@include%>区别
    AngularJS 内置过滤器
    ubuntu下swift安装
    ubuntu下gerrit 安装部署
    java日期操作
    SpringMVC GET请求中文数据传递到Server端乱码
  • 原文地址:https://www.cnblogs.com/eret9616/p/9197153.html
Copyright © 2011-2022 走看看