Расширение файла .mjs используется для модулей JavaScript ECMAScript. Оно указывает на то, что файл должен обрабатываться как модуль средами выполнения JavaScript (JavaScript runtimes), как в браузерах, так и в средах Node.js. Это критически важно, поскольку модули имеют иную семантику, чем традиционные скрипты JavaScript. Модули обладают собственной областью видимости (scope), что означает, что переменные и функции, объявленные внутри модуля, не становятся автоматически доступными в глобальной области видимости. Они должны быть явно экспортированы (explicitly exported), чтобы их могли использовать другие модули. Аналогично, для использования кода из других модулей, его необходимо явно импортировать (explicitly import). Этот механизм явного импорта/экспорта способствует лучшей организации кода, повышению его повторного использования (reusability) и предотвращению конфликтов имен. Использование .mjs позволяет движкам JavaScript корректно парсить и выполнять код как модуль, активируя такие возможности, как операторы import и export. Это ключевая часть современной разработки на JavaScript, облегчающая создание модульных кодовых баз и улучшенное управление зависимостями. Использование .mjs также помогает отличить файлы модулей от традиционных файлов скриптов JavaScript (обычно использующих расширение .js), которые могут интерпретироваться по-разному старыми движками JavaScript или инструментами сборки (build tools). Это различие особенно важно в средах, где сосуществуют как модульные, так и скриптовые файлы.