A extensão de arquivo .mjs é utilizada para módulos ECMAScript JavaScript. Ela sinaliza que o arquivo deve ser tratado como um módulo pelos ambientes de execução JavaScript, tanto em navegadores quanto em ambientes Node.js. Isso é fundamental porque os módulos possuem semânticas diferentes dos scripts JavaScript tradicionais. Os módulos possuem seu próprio escopo, o que significa que variáveis e funções declaradas dentro de um módulo não ficam automaticamente disponíveis no escopo global. Elas devem ser explicitamente exportadas para serem utilizadas por outros módulos. Da mesma forma, para utilizar código de outros módulos, é necessário importá-lo explicitamente. Esse mecanismo de importação/exportação promove a organização do código, a reutilização e evita conflitos de nomenclatura. O uso de .mjs permite que os motores JavaScript analisem e executem o código corretamente como um módulo, habilitando recursos como as declarações import e export. É uma parte crucial do desenvolvimento JavaScript moderno, facilitando bases de código modulares e um melhor gerenciamento de dependências. O uso de .mjs também ajuda a diferenciar arquivos de módulo de arquivos de script JavaScript tradicionais (tipicamente usando a extensão .js), que podem ser interpretados de forma diferente por motores JavaScript mais antigos ou ferramentas de build. Essa distinção é particularmente importante em ambientes onde arquivos de módulo e de script coexistem.