PassFront
  1. PassFront
  2. База знаний
  3. Современный JS ES6+

Как работают модули?

Современный JS ES6+

Модули работают через изолированную область видимости и явные `export`/`import`: каждый модуль имеет своё пространство, экспортирует нужное и импортирует зависимости. Они загружаются и выполняются один раз.

Как устроены ES-модули

Экспорт

// utils.js
export const PI = 3.14;               // именованный
export function sum(a, b) { return a + b; }
export default class Calculator {}    // по умолчанию

Импорт

import Calculator, { PI, sum } from './utils.js';
import * as utils from './utils.js';  // всё пространство
const mod = await import('./utils.js'); // динамический

Особенности

  • Своя область видимости — переменные модуля не глобальны (нет конфликтов).
  • Строгий режим по умолчанию.
  • Статичность — import/export анализируются при сборке → возможен tree shaking.
  • Синглтон — модуль выполняется один раз; при повторном импорте берётся кешированный экземпляр.
  • Отложенное выполнение — модули загружаются как defer.
  • Живые связи — импортированные значения отражают изменения в модуле (live bindings).

Форматы

  • ES Modules (ESM) — стандарт (import/export), браузер и Node.
  • CommonJS — Node (require/module.exports), синхронный, динамический.

Как выполняются

Браузер строит граф зависимостей, загружает модули (параллельно), выполняет один раз в порядке зависимостей.

Коротко для собеседования

Модули имеют изолированную область видимости, экспортируют через export и импортируют через import, работают в строгом режиме. Статичны (tree shaking), выполняются один раз (кеш/синглтон), с живыми связями. ESM — стандарт (import/export), CommonJS — Node (require).

Другие вопросы раздела