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 зависимым от инструмента.