Работа с служебным модулем Node.js

0
и технологии 24.webp.webp

Последнее обновление 22.05.2023 — Василий Иванов

Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Модуль util предоставляет набор утилит, которые можно использовать для отладки, проверки и форматирования данных в приложениях Node.js.

Изучите различные функции модуля util и изучите несколько примеров, которые помогут вам использовать эти инструменты.

Регистрация с большим удобством

Ведение журнала относится к записи важной информации или событий, таких как значения переменных, сообщения об ошибках и поток выполнения, которые происходят в программном приложении. Ведение журнала служит нескольким целям, включая отладку, мониторинг и аудит.

Модуль Node.js util предоставляет удобный механизм ведения журнала с использованием метода util.debuglog. Это позволяет вам создавать функции ведения журнала отладки с пространством имен, и вы можете включать или отключать их, устанавливая переменную среды NODE_DEBUG. Вот пример:

 // index.js
const util = require("util");

const debug = util.debuglog("myapp"); // initialize debug logger

debug("This is a debug message"); // MYAPP 39668: This is a debug message

В этом примере показано, как можно установить простой регистратор отладки в пространстве имен «myapp» и записать сообщение и его идентификатор процесса на консоль.

По теме:  Как включить или отключить автозапуск на Spotify

Чтобы включить журналы отладки, установите переменную среды NODE_DEBUG в пространство имен при запуске скрипта:

 NODE_DEBUG=myapp node index.js

Если вы хотите включить несколько пространств имен отладки, добавьте запятую для разделения пространств имен:

 NODE_DEBUG=myapp,myapp2,myapp3 node index.js

Если вы не включите пространство имен в переменную среды NODE_DEBUG, вызовы журнала отладки будут игнорировать это пространство имен.

Метод util.debuglog предоставляет полезную функциональность, но если вашему приложению требуется более сложное ведение журнала, вы можете использовать один из других надежных пакетов ведения журнала в экосистеме Node.js.

Многообещающие функции для гибкости

Обещания в JavaScript предоставляют способ обработки асинхронного кода более структурированным и управляемым способом, позволяя объединять операции в цепочку, обрабатывать ошибки и события успеха отдельно и избегать ада обратных вызовов.

Хотя не все встроенные функции поддерживают промисы. Однако вы можете «обещать» функции, использующие традиционные обратные вызовы, чтобы они могли поддерживать обещания с помощью метода util.promisify модуля util.

Этот метод принимает функцию, использующую традиционную систему обратного вызова, и возвращает функцию, использующую промисы.

Например:

 const util = require("util");

// Callback version
function callbackFunction(arg1, arg2, callback) {
  // Asynchronous operation
  // Invoke callback with error (if any) and result
}

// Promisify callbackFunction
const callbackFunctionPromise = util.promisify(callbackFunction);

// Promisified version
callbackFunctionPromise(arg1, arg2)
  .then((result) => {
    // Process result
  })
  .catch((error) => {
    // Handle error
  });

В приведенном выше примере метод util.promisify преобразовал версию функции обратного вызова в версию, использующую промисы.

Это преобразование позволяет вам использовать блоки chain then и catch, использовать try-catch и лучше управлять асинхронным кодом.

Форматирование строк знакомым методом

Модуль Node.js util предоставляет функцию форматирования с именем util.format, которая позволяет создавать форматированные строки. Этот метод работает аналогично функции printf в bash и других языках программирования, таких как C и C++.

Метод util.format() принимает в качестве аргумента строку формата, которая может содержать ноль или более спецификаторов формата, например %s (строки), %d (числа). Он также принимает произвольное количество значений, которые заменят соответствующие им спецификаторы.

Например:

 const util = require("util");

const name = "Bonnie";
const age = 30;

const formattedString = util.format(
  "My name is %s, and I am %d years old.",
  name,
  age
);

console.log(formattedString); // My name is Bonnie, and I am 30 years old.

В этом примере используется строка формата с двумя заполнителями: %s и %d. Заполнитель %s предназначен для замены строки, а %d — для числовой замены. Вызов util.format передает соответствующие значения — имя и возраст — для каждого заполнителя.

Если спецификатор не имеет соответствующего аргумента, метод util.format не заменит его и вернет строку без ее изменения:

 const util = require("util");

const formattedString = util.format("My name is %s");
console.log(formattedString); // My name is %s

В этом примере формат вызывается только с одним аргументом, поэтому метод возвращает исходную строку.

Существует множество других применений модуля Util

Помимо этих целей, служебный модуль Node.js предлагает другие служебные функции. Примеры включают проверку объектов и значений и отказ от устаревших инструментов.

Используя функциональные возможности, предоставляемые модулем util, вы можете улучшить читабельность и удобство сопровождения вашего кода и рабочего процесса в целом.