📜  Node.js util 模块 - Javascript (1)

📅  最后修改于: 2023-12-03 15:33:10.176000             🧑  作者: Mango

Node.js util 模块 - Javascript

Node.js util 模块提供了一些有用的函数来处理不同种类的数据类型、文件系统等,方便程序员进行开发。在本篇文章中,我们将介绍其中一些常用的工具函数及其使用方法。

util.inherits

util.inherits是一个继承函数,让一个构造函数继承另一个构造函数的原型对象。比如:

const EventEmitter = require('events');
const util = require('util');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

stream.on('data', function(data) {
  console.log('Received data: ' + data);
});

stream.write('It works!'); // 输出 'Received data: It works!'

在上述例子中,我们定义了一个继承自EventEmitter的MyStream类,当调用MyStream.prototype.write时会触发事件“data”,最后我们通过实例化对象stream来使用该类。

util.inspect

util.inspect用于打印一个对象,可以方便地查看对象的结构。它支持自定义选项,可以配置输出结果的风格。比如:

const arr = [1, 2, { a: 3, b: 4 }, [5, 6], 'Hello World'];
console.log(util.inspect(arr, { showHidden: true, depth: null }));

在上述例子中,我们使用了showHidden和depth两个选项来打印arr数组的元素,其中showHidden表示是否输出隐藏属性,depth则表示对象的递归深度,默认为2。

util.format

util.format可以将不同类型的参数格式化成一个字符串,常用于快速生成日志信息等。比如:

const name = 'Tom', age = 20;
const str = util.format('Hello, my name is %s and I am %d years old!', name, age);
console.log(str); // 输出 'Hello, my name is Tom and I am 20 years old!'

在上述例子中,我们使用%s和%d两个占位符将name和age变量格式化成字符串,并拼接在一起。

util.promisify

util.promisify可以将一个异步函数转换为返回Promise的函数,方便地实现异步编程。比如:

const fs = require('fs');
const util = require('util');

const readFile = util.promisify(fs.readFile);

async function main() {
  try {
    const data = await readFile('./test.txt', 'utf8');
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

main();

在上述例子中,我们将fs.readFile方法转换为返回Promise的Promise.readFile方法,使用async/await语法进行异步处理。

总结

本文介绍了Node.js util模块中一些常用的工具函数及其使用方法。其中,util.inherits可以方便地实现继承功能,util.inspect可以打印对象的结构,util.format可以快速生成格式化的字符串,util.promisify可以实现异步编程。开发者可以根据自己的需求选用不同的函数来简化开发流程,提高代码质量。