Сколько раз выполнится модуль
Вопрос
a.js и b.js оба делают import './logger.js', а main.js импортирует a.js и b.js. В logger.js на верхнем уровне стоит console.log('logger загружен'). Сколько раз выведется строка?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Один разправильный ответ
- Два раза
- Три раза
- Ни разу, модуль без экспортов не выполняется
Разбор
Модуль выполняется один раз на всё приложение (на один URL или путь), дальше все импорты получают уже готовый экземпляр. Поэтому модули удобны для синглтонов вроде клиента API. Импорт ради побочного эффекта (import './x.js' без имён) законен и выполняет модуль. Количество импортёров на число выполнений не влияет. В CommonJS так же: после первого require модуль берётся из кеша.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.