Nodejs实用工具模块util的使用

Nodejs实用工具模块util的使用
Node.js 中的 util 模块提供了多种实用工具函数,用于辅助开发和调试。这些函数涵盖了从格式化输出到性能测量等多个方面。下面是一些常用的 util 模块功能及其示例。

1. util.format()

util.format() 函数类似于 C 语言中的 printf 函数,可以用来格式化字符串。

const util = require('util');

console.log(util.format('%s:%d', 'Port', 8080)); // 输出: Port:8080

2. util.inspect()

util.inspect() 用于将对象转换为字符串表示形式,常用于调试。

const util = require('util');

const myObject = {name: 'Alice', age: 25};
console.log(util.inspect(myObject, {showHidden: false, depth: null}));
// 输出: { name: 'Alice', age: 25 }

3. util.debuglog()

util.debuglog() 创建一个仅在设置了环境变量时才会输出的日志函数。这有助于减少生产环境中不必要的日志记录。

const util = require('util');
const debuglog = util.debuglog('myapp');

debuglog('This is a debug message');

若要在命令行中启用此日志,可以设置环境变量:

DEBUG=myapp node yourscript.js

4. util.deprecate()

util.deprecate() 用于标记函数或方法已过时,并提供替代方案。

const util = require('util');

const oldFunction = util.deprecate(() => {
    console.log('This function is deprecated.');
}, 'oldFunction() is deprecated, use newFunction() instead.');

oldFunction();

5. util.promisify()

util.promisify() 将遵循 Node.js 回调模式的函数转换为返回 Promise 的函数。

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

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

readFileAsync('./example.txt', 'utf8')
    .then(data => console.log(data))
    .catch(err => console.error(err));

6. util.callbackify()

util.callbackify() 将返回 Promise 的异步函数转换为接受回调的函数。

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

const fsReadFileCallback = util.callbackify(fs.readFile);

fsReadFileCallback('./example.txt', 'utf8')
    .then(data => console.log(data))
    .catch(err => console.error(err));

以上就是 util 模块的一些常见用法。你可以根据实际需求选择合适的函数来简化你的 Node.js 开发过程。


3 回复

当然!Node.js中的util模块是个宝藏,里面藏着不少实用的小工具。比如util.inspect,它能让你看到对象的内部结构,就像X光透视一样,简直是调试时的好帮手。

还有util.format,这个方法可以让你像使用printf那样格式化字符串,非常适合输出日志信息时使用。例如:

const util = require('util');

console.log(util.format("Hello, %s! You've got %d unread messages.", 'Alice', 42));
// 输出: Hello, Alice! You've got 42 unread messages.

另外,util.promisify能将回调风格的函数转换成返回Promise的函数,让异步代码更简洁易读。比如,你可以这样用它来处理fs模块的异步操作:

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

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

readFile('./example.txt', 'utf8').then(data => {
    console.log(data);
}).catch(err => {
    console.error(err);
});

希望这些小技巧能让你在使用Node.js时更加得心应手!


util 是 Node.js 提供的一个内置实用工具模块,它包含了许多有用的函数,可以方便地用于开发和调试。下面我将介绍几个常用的 util 模块功能,并给出相应的代码示例。

1. util.inspect()

这个函数主要用于将对象转换为字符串,这对于调试非常有用。你可以设置一些选项来自定义输出。

const util = require('util');

const obj = {
    name: "John",
    age: 30,
    hobbies: ["reading", "coding"]
};

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

2. util.format()

util.format() 函数类似于 C 语言中的 printf,可以格式化字符串。

const util = require('util');

let name = 'Alice';
let age = 25;

console.log(util.format("Name: %s, Age: %d", name, age));

3. util.deprecate()

当你想要标记一个函数或类为已弃用时,可以使用 util.deprecate()。当该函数被调用时,会打印一条警告信息。

const util = require('util');

function oldFunction() {
    util.deprecate(
        () => console.log('This is an old function.'),
        'oldFunction is deprecated, use newFunction instead.'
    )();
}

// 调用已弃用的函数
oldFunction();

4. util.callbackify()

这个方法可以将返回 Promise 的函数转换成接受回调的函数。这对于需要支持旧版 Node.js API 的情况很有用。

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

const fsReadFile = util.callbackify(fs.readFile);

fsReadFile(__filename, 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data);
});

这些只是 util 模块的一部分功能,实际上它还提供了其他很多有用的工具函数,如 debug()inherits() 等。了解和掌握这些工具可以使你的 Node.js 开发更加高效。

Node.js中的util模块提供了多种实用工具函数,主要分为两大类:对开发者有用的辅助函数和用于调试的日志函数。

常用的开发者辅助函数包括:

  • util.inspect(object[, options]): 将对象转换为字符串,便于阅读。
  • util.promisify(original): 将回调风格的函数转换为返回Promise的函数。

日志相关的函数如:

  • util.debuglog(section): 创建一个仅在设置了环境变量时才会输出日志信息的函数。

使用时需要先引入util模块,例如:const util = require('util');。然后就可以调用上述方法了。

回到顶部