Назад к вопросам
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');