99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Node.js 實用工具

2022-02-26 10:32 更新
穩(wěn)定性: 4 - 鎖定

本節(jié)介紹Node.js的'util'模塊中的函數(shù)的使用,通過require('util')訪問該模塊,如下所示:

const util = require('util');

util 模塊原先設計的初衷是用來支持Node.js的內(nèi)部API的。這里的很多的函數(shù)對你的程序來說都非常有用。如果你覺得這些函數(shù)不能滿足你的要求,那你可以寫自己的工具函數(shù)。我們不希望'util'模塊里添加對于node內(nèi)部函數(shù)無用的擴展。

util.debuglog(section)

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

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

例如:

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

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

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

FOO 3245: hello from foo [123]

3245是進程ID。如果沒有運行在這個環(huán)境變量里,將不會打印任何東西。

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

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

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

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

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

如果占位符沒有包含一個相應的參數(shù),占位符不會被替換。

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

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

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

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

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

util.log(string)

stdout輸出并帶有時間戳:

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

util.inspect(object[, options])

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

通過加入一些可選選項,來改變對象的格式化輸出形式:

  • showHidden- 如果為true,將會顯示對象的不可枚舉屬性。默認為false。

  • depth- 告訴inspect格式化對象時遞歸多少次。這在格式化大且復雜對象時非常有用。默認為 2。如果想無窮遞歸的話,傳null。

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

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

檢查util對象上所有屬性的例子:

var util = require('util');

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

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

自定義util.inspect顏色

util.inspect通過util.inspect.stylesutil.inspect.colors對象,自定義全局的輸出顏色,

util.inspect.stylesutil.inspect.colors組成風格顏色的一對映射。

高亮風格和他們的默認值:

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

預定義的顏色為: white、斜體、black、bluecyan、綠色洋紅、紅色黃色以及粗體、斜體、下劃線反選風格。

對象自定義inspect()函數(shù)

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

var util = require('util');

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

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

你可以返回另外一個對象,返回的字符串會根據(jù)返回的對象格式化。這和JSON.stringify()的工作流程類似。您還可以完全返回另一個對象,返回的字符串將根據(jù)返回的對象格式化。這與JSON.stringify()的工作方式類似:

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òu)造函數(shù)constructor繼承原型方法到另一個。構(gòu)造函數(shù)的原型將被設置為一個新的從超類(superConstructor)創(chuàng)建的對象。

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

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

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的前身。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號