多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國(guó)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2

nodejs教程

Node.js 實(shí)用工具

閱讀 (2199)

實(shí)用工具

穩(wěn)定性: 4 - 鎖定

這些函數(shù)都在'util' 模塊里。使用 require('util') 來(lái)訪(fǎng)問(wèn)他們。

util 模塊原先設(shè)計(jì)的初衷是用來(lái)支持 node 的內(nèi)部 API 的。這里的很多的函數(shù)對(duì)你的程序來(lái)說(shuō)都非常有用。如果你覺(jué)得這些函數(shù)不能滿(mǎn)足你的要求,那你可以寫(xiě)自己的工具函數(shù)。我們不希望 'util' 模塊里添加對(duì)于 node 內(nèi)部函數(shù)無(wú)用的擴(kuò)展。

util.debuglog(section)

  • section {字符串} 被調(diào)試的程序節(jié)點(diǎn)部分
  • Returns: {Function} 日志函數(shù)

用來(lái)創(chuàng)建一個(gè)有條件的寫(xiě)到 stderr 的函數(shù)(基于 NODE_DEBUG 環(huán)境變量)。如果 section 出現(xiàn)在環(huán)境變量里,返回函數(shù)將會(huì)和 console.error() 類(lèi)似。否則,返回一個(gè)空函數(shù)。

例如:

javascript
var debuglog = util.debuglog('foo');

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

如果這個(gè)程序以 NODE_DEBUG=foo 的環(huán)境運(yùn)行,將會(huì)輸出:

FOO 3245: hello from foo [123]

3245 是進(jìn)程 ID。如果沒(méi)有運(yùn)行在這個(gè)環(huán)境變量里,將不會(huì)打印任何東西。

可以用逗號(hào)切割多個(gè) NODE_DEBUG 環(huán)境變量。例如:NODE_DEBUG=fs,net,tls

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

使用第一個(gè)參數(shù)返回一個(gè)格式化的字符串,類(lèi)似 printf

第一個(gè)參數(shù)是字符串,它包含 0 或更多的占位符。每個(gè)占位符被替換成想要參數(shù)轉(zhuǎn)換的值。支持的占位符包括:

  • %s - 字符串.
  • %d - 數(shù)字 (整數(shù)和浮點(diǎn)數(shù)).
  • %j - JSON. 如果參數(shù)包含循環(huán)引用,將會(huì)用字符串替換R
  • %% - 單獨(dú)一個(gè)百分號(hào) ('%')。 不會(huì)消耗一個(gè)參數(shù)。

如果占位符沒(méi)有包含一個(gè)相應(yīng)的參數(shù),占位符不會(huì)被替換。

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

如果參數(shù)超過(guò)占位符,多余的參數(shù)將會(huì)用 util.inspect() 轉(zhuǎn)換成字符串,并拼接在一起,用空格隔開(kāi)。

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

如果第一個(gè)參數(shù)不是格式化字符串,那么 util.format() 會(huì)返回所有參數(shù)拼接成的字符串(空格分割)。每個(gè)參數(shù)都會(huì)用 util.inspect() 轉(zhuǎn)換成字符串。

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

util.log(string)

stdout 輸出并帶有時(shí)間戳.

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

util.inspect(object[, options])

返回一個(gè)對(duì)象的字符串表現(xiàn)形式,在代碼調(diào)試的時(shí)候非常有用。

通過(guò)加入一些可選選項(xiàng),來(lái)改變對(duì)象的格式化輸出形式:

  • showHidden - 如果為 true,將會(huì)顯示對(duì)象的不可枚舉屬性。默認(rèn)為 false

  • depth - 告訴 inspect 格式化對(duì)象時(shí)遞歸多少次。這在格式化大且復(fù)雜對(duì)象時(shí)非常有用。默認(rèn)為 2。如果想無(wú)窮遞歸的話(huà),傳 null

  • colors - 如果為 true, 輸出內(nèi)容將會(huì)格式化為有顏色的代碼。默認(rèn)為 false, 顏色可以自定義,參見(jiàn)下文。

  • customInspect - 如果為 false, 那么定義在被檢查對(duì)象上的inspect(depth, opts) 方法將不會(huì)被調(diào)用。 默認(rèn)為true。

檢查 util 對(duì)象上所有屬性的例子:

var util = require('util');

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

當(dāng)被調(diào)用的時(shí)候,參數(shù)值可以提供自己的自定義inspect(depth, opts)方法。該方法會(huì)接收當(dāng)前的遞歸檢查深度,以及傳入util.inspect()的其他參數(shù)。

自定義 util.inspect 顏色

util.inspect 通過(guò) util.inspect.stylesutil.inspect.colors 對(duì)象,自定義全局的輸出顏色,

util.inspect.stylesutil.inspect.colors 組成風(fēng)格顏色的一對(duì)映射。

高亮風(fēng)格和他們的默認(rèn)值:

  • 數(shù)字 (黃色)
  • boolean (黃色)
  • 字符串 (綠色)
  • date (洋紅)
  • regexp (紅色)
  • null (粗體)
  • undefined (斜體)
  • special - (青綠色)
  • name (內(nèi)部用,不是風(fēng)格)

預(yù)定義的顏色為: white, 斜體, black, blue, cyan,綠色, 洋紅, 紅色黃色.以及 粗體, 斜體, 下劃線(xiàn)反選 風(fēng)格.

對(duì)象上德自定義 inspect() 函數(shù)

對(duì)象也能自定義 inspect(depth) 函數(shù), 當(dāng)使用util.inspect()檢查該對(duì)象的時(shí)候,將會(huì)執(zhí)行對(duì)象自定義的檢查方法:

var util = require('util');

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

util.inspect(obj);
  // "{nate}"

你可以返回另外一個(gè)對(duì)象,返回的字符串會(huì)根據(jù)返回的對(duì)象格式化。這和 JSON.stringify() 的工作流程類(lèi)似。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 的內(nèi)部別名。

如果參數(shù) "object" 是數(shù)組,返回 true ,否則返回 false

var util = require('util');

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

util.isRegExp(object)

如果參數(shù) "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)

如果參數(shù) "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)

如果參數(shù) "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)

從一個(gè)構(gòu)造函數(shù)constructor繼承原型方法到另一個(gè)。構(gòu)造函數(shù)的原型將被設(shè)置為一個(gè)新的從超類(lèi)(superConstructor)創(chuàng)建的對(duì)象。

通過(guò) constructor.super_ 屬性可以訪(fǎng)問(wèn) 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)

標(biāo)明該方法不要再使用。

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')

返回一個(gè)修改過(guò)的函數(shù),默認(rèn)情況下僅警告一次。如果設(shè)置了 --no-deprecation 該函數(shù)不做任何事。如果設(shè)置了--throw-deprecation,如果使用了該 API 應(yīng)用將會(huì)拋出異常

util.debug(string)

穩(wěn)定性: 0 - 拋棄: 使用 console.error() 替換。

console.error 的前身。

util.error([...])

穩(wěn)定性: 0 - 拋棄: 使用 console.error() 替換。

console.error 的前身。

util.puts([...])

穩(wěn)定性: 0 - 拋棄:使用 console.log() 替換。

console.log 的前身。

util.print([...])

穩(wěn)定性: 0 - 拋棄: 使用 console.log() 替換。

console.log 的前身。

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

穩(wěn)定性: 0 - 拋棄: Use readableStream.pipe(writableStream)

stream.pipe 的前身。

關(guān)閉
程序員人生
主站蜘蛛池模板: 日本一区二区在线播放 | 国产永久在线 | 91porn丨首页入口 | 天堂成人 | 久草在线视频福利资源站 | 天天综合在线观看 | 亚洲综合色自拍一区 | 欧美成人毛片在线视频 | 高清一级做a爱免费视 | 性做久久久久久久 | 中文字幕首页 | 亚洲欧美日韩一区二区 | 欧美性xxx久久 | 秋霞免费手机理论视频在线观看 | 黄色网址免费 | 国产成人a v在线影院 | 永久免费视频网站在线观看 | 91精品福利一区二区三区野战 | xxxx日| 国产大片免费天天看 | 大焦伊人| 精品国产高清毛片 | 亚洲福利一区 | 99久久999久久久综合精品涩 | 波多野结衣在线观看一区二区三区 | 国产精品原创永久在线观看 | freexx美国1819xx| 国产精品精品 | 亚洲成人黄色网址 | 亚洲精品乱码久久久久久蜜桃欧美 | 伊人网站 | a级特黄毛片免费观看 | 国产区图片区小说区亚洲区 | 日韩欧美亚洲视频 | 免费麻豆国产一区二区三区四区 | 亚洲免费黄色片 | 爱爱的免费视频 | 伊人官网| 中文字幕乱码在线 | 另类小说图片 | 网址在线|