Модули ES (ECMAScript) — это стандартный способ работы с модулями в JavaScript, определенный в спецификации ECMAScript 2015 (ES6). Используют синтаксис import и export.
CommonJS — это система модулей, широко используемая в среде Node.js. Использует синтаксис require() и module.exports.
Основные отличия:
Синтаксис:
javascript
javascript
Загрузка:
Разрешение зависимостей:
Связывание (Binding):
this в глобальной области видимости:
this равно undefined.this равно module.exports.Таблица сравнения:
| Характеристика | ES Modules | CommonJS |
|---|---|---|
| Синтаксис | import, export | require(), module.exports |
| Загрузка | Асинхронная (статический анализ) | Синхронная |
| Разрешение зависимостей | Статическое | Динамическое |
| Связывание | Живое (live binding) | По значению (copy of value) |
this в глобальной | undefined | module.exports |
| Использование | Браузеры, Node.js | Node.js |
| Деревьястряхивание | Поддерживается | Не поддерживается напрямую |