La extensión de archivo .mjs se utiliza para módulos de ECMAScript JavaScript. 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 de Node.js. Esto es fundamental porque los módulos poseen una semántica distinta a la de los scripts de JavaScript tradicionales. 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 disponibles automáticamente en el ámbito global. Deben exportarse explícitamente para ser utilizadas por otros módulos. Del mismo modo, para utilizar código de otros módulos, es necesario importarlo explícitamente. Este mecanismo 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 que los motores de JavaScript analicen y ejecuten correctamente el código como un módulo, habilitando funciones 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 tradicionales (que suelen utilizar la extensión .js), los cuales podrían ser interpretados de manera diferente por motores de JavaScript antiguos o herramientas de compilación. Esta distinción es particularmente importante en entornos donde coexisten archivos de módulo y de script.