在 Node.js 中,util 模块提供了一系列实用工具函数,用于辅助开发者编写更加简洁和高效的代码。以下是一些常用的 util 模块工具函数:

1. util.promisify(original):
   将基于回调的异步函数转换为返回 Promise 的异步函数。
   const util = require('util');
   const fs = require('fs');

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

   readFileAsync('example.txt', 'utf-8')
     .then(data => console.log(data))
     .catch(err => console.error(err));

2. util.format(format[, ...args]):
   使用类似于 printf 的格式化字符串创建字符串。
   const util = require('util');
   
   const formattedString = util.format('%s is %d years old', 'Alice', 30);
   console.log(formattedString); // 输出: Alice is 30 years old

3. util.inspect(object[, options]):
   将对象转换为字符串,常用于调试和日志输出。
   const util = require('util');

   const obj = { name: 'John', age: 25, city: 'New York' };
   console.log(util.inspect(obj)); // 输出: { name: 'John', age: 25, city: 'New York' }

4. util.inherits(constructor, superConstructor):
   继承原型方法,已废弃,推荐使用 ES6 的 class 和 extends。
   const util = require('util');

   function Animal(name) {
     this.name = name;
   }

   function Dog(name, breed) {
     Animal.call(this, name);
     this.breed = breed;
   }

   util.inherits(Dog, Animal);

   const myDog = new Dog('Buddy', 'Golden Retriever');
   console.log(myDog.name); // 输出: Buddy

   推荐使用 ES6 的 class 和 extends 来实现继承:
   class Animal {
     constructor(name) {
       this.name = name;
     }
   }

   class Dog extends Animal {
     constructor(name, breed) {
       super(name);
       this.breed = breed;
     }
   }

   const myDog = new Dog('Buddy', 'Golden Retriever');
   console.log(myDog.name); // 输出: Buddy

5. util.promisify.custom:
   用于自定义 util.promisify 返回的 Promise 对象的属性名。
   const util = require('util');
   const fs = require('fs');

   const customPromisify = util.promisify.custom;

   const customReadFileAsync = (filename, encoding) => {
     return new Promise((resolve, reject) => {
       fs.readFile(filename, encoding, (err, data) => {
         if (err) reject(err);
         resolve(data);
       });
     });
   };

   util.promisify.custom = customPromisify;
   const customReadFile = util.promisify(customReadFileAsync);

   customReadFile('example.txt', 'utf-8')
     .then(data => console.log(data))
     .catch(err => console.error(err));

这些是 util 模块中一些常用的工具函数。Node.js 的 util 模块还包含其他一些工具函数,用于处理对象、错误、事件等。详细信息可以参考 Node.js 官方文档。


转载请注明出处:http://www.zyzy.cn/article/detail/4743/Node.js