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