Вывод в командную строку с использованием 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 = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
Сброс счетчика
Метод console.countReset()
сбрасывает счетчик, используемый с console.count()
.
Мы будем использовать пример с яблоками и апельсинами, чтобы продемонстрировать это.
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => console.count(fruit));
apples.forEach(fruit => console.count(fruit));
console.countReset('orange');
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()');
// do something, and measure the time it takes
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);