La extensión de archivo .mjs se utiliza para los módulos de JavaScript ECMAScript. Indica que el archivo debe ser tratado como un módulo por los entornos de ejecución de JavaScript, tanto en navegadores como en entornos Node.js. Esto es importante porque los módulos tienen una semántica diferente a la de los scripts tradicionales de JavaScript. Los módulos tienen su propio ámbito (scope), lo que significa que las variables y funciones declaradas dentro de un módulo no están automáticamente disponibles en el ámbito global. Deben ser exportadas explícitamente para ser utilizadas por otros módulos. De manera similar, para utilizar código de otros módulos, se debe importar explícitamente. Este mecanismo explícito de importación/exportación promueve la organización del código, la reutilización y evita conflictos de nombres. El uso de .mjs permite a los motores de JavaScript analizar y ejecutar el código correctamente como un módulo, habilitando características como las sentencias import y export. Es una parte crucial del desarrollo moderno de JavaScript, facilitando bases de código modulares y una mejor gestión de dependencias. El uso de .mjs también ayuda a diferenciar los archivos de módulo de los archivos de script de JavaScript tradicionales (que típicamente usan la extensión .js), los cuales podrían ser interpretados de manera diferente por motores de JavaScript o herramientas de compilación más antiguas. Esta distinción es particularmente importante en entornos donde coexisten archivos de módulo y de script.