Skip to content

Вывод в командную строку с использованием Node.js

Базовый вывод с использованием модуля console Node.js предоставляет модуль console, который предлагает множество полезных способов взаимодействия с командной строкой. Он в основном аналогичен объекту console, который вы найдете в браузере.

Самый основной и наиболее используемый метод — это console.log(), который выводит переданную ему строку в консоль. Если вы передаете объект, он будет отображен как строка.

Вы можете передавать несколько переменных в console.log, например:

javascript
const x = 'x';
const y = 'y';
console.log(x, y);

Мы также можем форматировать привлекательные фразы, передавая переменные и спецификатор формата. Например:

javascript
console.log('Моя %s имеет %d ушей', 'кошка', 2);
  • %s форматирует переменную как строку
  • %d форматирует переменную как число
  • %i форматирует переменную только как её целую часть
  • %o форматирует переменную как объект Пример:
javascript
console.log('%o', Number);

Очистка консоли

console.clear() очищает консоль (поведение может зависеть от используемой консоли).

Подсчет элементов

console.count() — удобный метод. Возьмем этот код:

javascript
const x = 1;
const y = 2;
const z = 3;
console.count('Значение x равно '+x+' и было проверено..сколько раз?');
console.count('Значение x равно '+x+' и было проверено..сколько раз?');
console.count('Значение y равно '+y+' и было проверено..сколько раз?');

Происходит то, что console.count() подсчитывает количество раз, когда выводится строка, и выводит счетчик рядом с ней:

Вы можете просто считать яблоки и апельсины:

javascript
const oranges = ['апельсин', 'апельсин'];
const apples = ['только одно яблоко'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));

Сброс подсчета

Метод console.countReset() сбрасывает счетчик, используемый с console.count().

Мы используем пример с яблоками и апельсинами, чтобы продемонстрировать это.

javascript
const oranges = ['апельсин', 'апельсин'];
const apples = ['только одно яблоко'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('апельсин');
oranges.forEach(fruit => console.count(fruit));

Вывод трассировки стека

В некоторых случаях может быть полезно вывести трассировку стека вызовов функции, например, чтобы ответить на вопрос, как вы попали в эту часть кода?

Это можно сделать с помощью console.trace():

javascript
const function2 = () => console.trace();
const function1 = () => function2();
function1();

Это выведет трассировку стека. Вот что выводится, если мы попробуем это в REPL Node.js:

bash
Trace
at function2 (repl:1:33)
at function1 (rep1:1:25)
at rep1:1:1
at ContextifyScript.Script.xunInThisContext (vm.js:44:33)
at REPLServer.defaultEval(repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.xunBound [as eval](domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitone (events.js:120:20)
at REPLServer.emit (events.js:210:7)

Вычисление затраченного времени

Вы можете легко вычислить, сколько времени занимает выполнение функции, используя time() и timeEnd().

javascript
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
    console.time('doSomething()');
    // выполните что-нибудь и измерьте затраченное время
    doSomething();
    console.timeEnd('doSomething()');
};
measureDoingSomething();

stdout и stderr

Как мы видели, console.log отлично подходит для вывода сообщений в консоль. Это так называемый стандартный вывод, или stdout.

console.error выводит в поток stderr.

Он не появится в консоли, но появится в журнале ошибок.

Изменение цвета вывода

Вы можете изменить цвет текста в консоли, используя escape-последовательности. Escape-последовательность — это набор символов, которые определяют цвет.

Пример:

javascript
console.log('\x1b[33ms\x1b[0m', 'hi!');

Вы можете попробовать это в REPL Node.js, и он выведет hi! желтым цветом.

Однако это низкоуровневый способ сделать это. Самый простой способ изменить цвет вывода консоли — использовать библиотеку. Chalk — это такая библиотека, и помимо изменения цвета она также помогает с другими средствами форматирования, такими как создание текста жирным, курсивом или подчеркиванием.

Вы устанавливаете ее с помощью npm install chalk, затем вы можете использовать ее:

javascript
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));

Использование chalk.yellow намного удобнее, чем запоминание escape-кодов, и код намного более читабелен.

Проверьте ссылку на проект, указанную выше, для получения дополнительных примеров использования.

Создание индикатора выполнения

progress — это замечательный пакет для создания индикатора выполнения в консоли. Установите его с помощью npm install progress.

Этот фрагмент создает индикатор выполнения из 10 шагов, и каждые 100 мс завершается один шаг. Когда полоса завершается, мы очищаем интервал:

javascript
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
    bar.tick();
    if (bar.complete) {
        clearInterval(timer);
    }
}, 100);