intermediate
ESM и CommonJS
Статические импорты, live bindings, require, exports, interop и поведение на границе пакетов.
ESM использует статические `import`/`export` с live bindings — импортёры видят обновления экспортёра. CommonJS использует runtime `require` и `module.exports`.
`"type": "module"` в package.json, `exports` maps и правила interop инструментов определяют форму default import. Циклические зависимости могут открыть частично инициализированные модули.
ESM даёт статический анализ и tree shaking; CJS более динамичен.
На интервью объясняйте концепцию на конкретном примере и называйте поведение рантайма, которое проверяют.
Типовые ошибки: путать похожие API и забывать edge cases в live coding.
Компромисс часто между ясностью и производительностью или между безопасностью и удобством.
Чеклист:
- Знайте static vs runtime loading.
- Проверьте package type и поле exports.
- Считайте default import interop зависимым от инструмента.