← Назад ко всем вопросам

В чем разница между CommonJS и ESM-модулем

1️⃣ Как кратко ответить

CommonJS — это модульная система, используемая в Node.js, где модули загружаются синхронно с помощью require(). ESM (ECMAScript Modules) — это стандартная модульная система JavaScript, поддерживаемая как в браузерах, так и в Node.js, где модули загружаются асинхронно с помощью import и export.

2️⃣ Подробное объяснение темы

Модульные системы в JavaScript позволяют организовать код в отдельные файлы и управлять зависимостями между ними. CommonJS и ESM — это две основные модульные системы, которые используются в JavaScript.

CommonJS:

  1. История и применение: CommonJS была разработана для использования в среде Node.js. Она позволяет разработчикам разбивать код на модули, которые можно загружать и использовать в других частях приложения.

  2. Синхронная загрузка: CommonJS загружает модули синхронно. Это означает, что выполнение кода останавливается до тех пор, пока модуль не будет загружен. Это подходит для серверной среды, где синхронность не является проблемой.

  3. Синтаксис: CommonJS использует require() для импорта модулей и module.exports для экспорта.

    // math.js
    function add(a, b) {
        return a + b;
    }
    ​
    module.exports = add;
    
    // app.js
    const add = require('./math');
    console.log(add(2, 3)); // 5
    

    В этом примере math.js экспортирует функцию add, которая затем импортируется и используется в app.js.

ESM (ECMAScript Modules):

  1. История и применение: ESM — это стандартная модульная система, которая была введена в спецификации ECMAScript 2015 (ES6). Она поддерживается как в браузерах, так и в Node.js, что делает её универсальной для фронтенд и бэкенд разработки.

  2. Асинхронная загрузка: ESM загружает модули асинхронно, что позволяет браузерам загружать модули параллельно, улучшая производительность.

  3. Синтаксис: ESM использует import и export для работы с модулями.

    // math.js
    export function add(a, b) {
        return a + b;
    }
    
    // app.js
    import { add } from './math.js';
    console.log(add(2, 3)); // 5
    

    В этом примере math.js экспортирует функцию add с помощью export, а app.js импортирует её с помощью import.

Ключевые различия:

  • Загрузка: CommonJS загружает модули синхронно, тогда как ESM загружает их асинхронно.
  • Поддержка: CommonJS в основном используется в Node.js, в то время как ESM поддерживается как в браузерах, так и в Node.js.
  • Синтаксис: CommonJS использует require() и module.exports, а ESM использует import и export.

Понимание этих различий важно для выбора правильной модульной системы в зависимости от контекста и требований проекта.

Тема: JavaScript
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки