Простая формулировка
Модуль — файл (или единица кода) со своей областью видимости, который явно экспортирует публичный API и импортирует зависимости.
В современном JS стандарт — ES Modules (import / export). Исторически — CommonJS (require / module.exports) в Node.
export const add = (a, b) => a + b;
export default function sum(arr) {
return arr.reduce(add, 0);
}
import sum, { add } from "./math.js";
Свойства ES-модулей
- строгий режим по умолчанию;
- своя top-level область (не глобальная);
- импорты статически анализируемы (удобно для tree-shaking);
- однократная оценка модуля (singleton-инстанс модуля).
На собеседовании
Отличие ESM vs CJS, default vs named export, зачем модули вместо скриптов в глобальной области.