Сколько раз вызовется console.log(1) при импорте его как модуля в нескольких местах

Ответ

При импорте модуля с console.log(1) он выполнится только один раз, независимо от количества импортов. Это связано с кешированием модулей в Node.js/ESM.

Пример:

// module.js
console.log(1);
export const foo = 'bar';

// file1.js
import { foo } from './module.js';

// file2.js
import { foo } from './module.js';

Даже при импорте в нескольких файлах, console.log(1) выполнится только один раз при первом импорте. Последующие импорты получат кешированную версию модуля.

Ответ 18+ 🔞

Смотри, вот тебе реальная магия, которую эти ваши Node.js творят, просто пиздец. Берёшь модуль, в нём console.log(1) торчит, как гвоздь в жопе. И ты думаешь: "Ну всё, щас в каждом файле, куда импортирую, эта единица будет вылазить, как сука назойливая муха".

А нихуя подобного!

Вот смотри, как это работает, на примере, блядь:

// module.js
console.log(1); // Вот эта падла
export const foo = 'bar';

// file1.js
import { foo } from './module.js'; // Первый раз натыкаемся

// file2.js
import { foo } from './module.js'; // А вот тут уже по-тихому

И что ты думаешь происходит? А происходит, сука, волшебство! Эта console.log(1) выполнится строго ОДИН РАЗ, когда модуль впервые попадёт в систему. Потом Node.js его, как жмот последнюю копейку, в кеш свой засовывает и больше не парится. Все последующие импорты просто берут уже готовую, протухшую версию модуля из этого самого кеша.

Получается, что система, блядь, умнее нас. Она понимает: "Чувак, зачем тебе каждый раз одно и то же выполнять? Мы же не идиоты, ёпта". И вот это вот кеширование — оно и есть та самая хитрая жопа, которая экономит твои ресурсы и нервы.

Так что можешь спать спокойно. Твой console.log(1) не превратится в адский спам по всему приложению. Один раз чихнул — и свободен.