Существуют две основные системы модульности в 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:
javascript
Пример ESM:
javascript