Вывод в командную строку с использованием Node.js
Базовый вывод с использованием модуля console Node.js предоставляет модуль console
, который предлагает множество полезных способов взаимодействия с командной строкой. Он в основном аналогичен объекту console
, который вы найдете в браузере.
Самый основной и наиболее используемый метод — это console.log()
, который выводит переданную ему строку в консоль. Если вы передаете объект, он будет отображен как строка.
Вы можете передавать несколько переменных в console.log
, например:
const x = 'x';
const y = 'y';
console.log(x, y);
Мы также можем форматировать привлекательные фразы, передавая переменные и спецификатор формата. Например:
console.log('Моя %s имеет %d ушей', 'кошка', 2);
%s
форматирует переменную как строку%d
форматирует переменную как число%i
форматирует переменную только как её целую часть%o
форматирует переменную как объект Пример:
console.log('%o', Number);
Очистка консоли
console.clear()
очищает консоль (поведение может зависеть от используемой консоли).
Подсчет элементов
console.count()
— удобный метод. Возьмем этот код:
const x = 1;
const y = 2;
const z = 3;
console.count('Значение x равно '+x+' и было проверено..сколько раз?');
console.count('Значение x равно '+x+' и было проверено..сколько раз?');
console.count('Значение y равно '+y+' и было проверено..сколько раз?');
Происходит то, что console.count()
подсчитывает количество раз, когда выводится строка, и выводит счетчик рядом с ней:
Вы можете просто считать яблоки и апельсины:
const oranges = ['апельсин', 'апельсин'];
const apples = ['только одно яблоко'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
Сброс подсчета
Метод console.countReset()
сбрасывает счетчик, используемый с console.count()
.
Мы используем пример с яблоками и апельсинами, чтобы продемонстрировать это.
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()
:
const function2 = () => console.trace();
const function1 = () => function2();
function1();
Это выведет трассировку стека. Вот что выводится, если мы попробуем это в REPL Node.js:
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()
.
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-последовательность — это набор символов, которые определяют цвет.
Пример:
console.log('\x1b[33ms\x1b[0m', 'hi!');
Вы можете попробовать это в REPL Node.js, и он выведет hi! желтым цветом.
Однако это низкоуровневый способ сделать это. Самый простой способ изменить цвет вывода консоли — использовать библиотеку. Chalk — это такая библиотека, и помимо изменения цвета она также помогает с другими средствами форматирования, такими как создание текста жирным, курсивом или подчеркиванием.
Вы устанавливаете ее с помощью npm install chalk
, затем вы можете использовать ее:
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
Использование chalk.yellow
намного удобнее, чем запоминание escape-кодов, и код намного более читабелен.
Проверьте ссылку на проект, указанную выше, для получения дополнительных примеров использования.
Создание индикатора выполнения
progress
— это замечательный пакет для создания индикатора выполнения в консоли. Установите его с помощью npm install progress
.
Этот фрагмент создает индикатор выполнения из 10 шагов, и каждые 100 мс завершается один шаг. Когда полоса завершается, мы очищаем интервал:
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);