Семь методов JavaScript, о которых незаслуженно мало говорят
В JavaScript есть методы, которые редко используются разработчиками уровней миддл и джуниор, но сильно упрощают разработку. Разработчик Elbrus Bootcamp Олег Смирнов рассказывает о семи методах console, которые можно использовать в чистом — или ванильном — JavaScript и в Node.js.
Ванильный JavaScript
Метод console.time()
Используется для подсчета времени, за которое выполняется операция. По сути, это таймер, который позволяет отложить выполнение функции на какое-то время. Представьте, что вам нужно показать всплывающее сообщение через минуту после того, как пользователь зашел на сайт. Эту минуту отсчитывает таймер, запуская функцию в строго определенный момент. А метод помогает его запустить.
console.time() в качестве аргумента принимает уникальное имя таймера. Остановить метод можно с помощью console.timeEnd(), а зафиксировать промежуточное значение — с помощью console.timeLog(). Метод позволяет запустить до 10 тыс. таймеров одновременно.
Метод console.count()
Действует как счетчик и выводит в консоль количество вызовов метода с определенной меткой. В качестве аргумента он принимает имя этого метода.
Счетчиков можно сделать сколько угодно. Если говорить о практическом применении, то метод, например, позволяют следить за тем, где хранятся временные переменные.
for (let i = 0 ; i<4; i++){
console.count("counter1");
}
for (let i = 0 ; i<4; i++){
console.count("counter2");
}
Вывод будет выглядеть следующим образом:
counter1: 1
counter1: 2
counter1: 3
counter1: 4
counter2: 1
counter2: 2
counter2: 3
counter2: 4
Метод console.group()
Метод, как следует из названия, используется для группировки сообщений в консоли. Каждое следующее сообщение сдвигается вправо и таким образом визуально отделяется от другого.
Код ниже выведет такой результат:
console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");
Отменить группировку со сдвигом можно методом console.groupEnd().
Метод console.table()
Если обычный console.log() выводит данные в виде таблицы, скрывая большую часть из них, то console.table() представляет их в виде наглядной таблицы.
Метод принимает в качестве аргумента массивы, массивы в массивах, массивы объектов и другие типы данных.
Важно отметить, что этот метод не используется в продакшн-среде: он не является стандартом и будет работать не во всех браузерах.
Node.js
Модуль cluster в Node.js
Позволяет использовать один и тот же серверный порт для нескольких дочерних процессов. Работает это следующим образом: основной процесс прослушивает порт и передает запросы дочерним процессам, распределенным по разным ядрам процессора.
На практике модуль используется для управления приложениями, которые работают с сетью. Но он подходит и для других приложений, которым нужно работать на нескольких ядрах процессора.
Модуль isolated-vm в Node.js
Позволяет запускать код полностью изолированно от основной логики и дает полный контроль над памятью и временем выполнения. Это многопоточный модуль с хорошей поддержкой (его используют несколько крупных проектов), который может быть полезен для безопасного запуска кода, которому программист не доверяет.
Модуль inspector в Node.js
Инструмент — профайлер, который доступен в Chrome DevTools во вкладке Performance. Его главная задача — собирать информацию о том, как выполнялся код. Например, сколько времени заняло выполнение каждой функции, как выделялась и освобождалась память и так далее.
Заключение
Этот список методов и модулей — не исчерпывающий. О других возможностях консоли в JavaScript и инструментах Node.js можно почитать в блоге Mozilla и в официальной документации к Node.js соответственно.