Назад к вопросам
Middle
211
questionbank

В чем разница между системами модульности?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Существуют две основные системы модульности в JavaScript: CommonJS (CJS) и ES Модули (ESM).

Feature CommonJS (CJS) ES Modules (ESM)
Синтаксис импорта require() import
Синтаксис экспорта module.exports или exports export
Загрузка Синхронная Асинхронная
Поддержка в Node.js Исконная, без флагов Требует .mjs расширения или "type": "module" в package.json (с Node.js 14+)
Динамический импорт Нет import()

CJS использовался в Node.js по умолчанию до появления ESM. ESM является стандартом для JavaScript и поддерживается в современных браузерах и версиях Node.js. ESM обладает преимуществами в виде статического анализа, возможности tree-shaking (удаление неиспользуемого кода) и асинхронной загрузки модулей.

Пример CJS:

// myModule.js
function sayHello(name) {
  console.log(`Hello, ${name}!`);
}

module.exports = {
  sayHello
};

// app.js
const myModule = require('./myModule');
myModule.sayHello('World');

Пример ESM:

// myModule.mjs
export function sayHello(name) {
  console.log(`Hello, ${name}!`);
}

// app.mjs
import { sayHello } from './myModule.mjs';
sayHello('World');