A extensão de arquivo .mjs é utilizada para módulos JavaScript ECMAScript. Ela sinaliza que o arquivo deve ser tratado como um módulo pelos runtimes JavaScript, tanto em navegadores quanto em ambientes Node.js. Isso é crucial porque módulos possuem semânticas diferentes dos scripts JavaScript tradicionais. 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 (export) para serem utilizadas por outros módulos. Similarmente, para utilizar código de outros módulos, você deve explicitamente importá-lo (import). Este mecanismo explícito 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 funcionalidades como as declarações import e export. É uma parte fundamental do desenvolvimento JavaScript moderno, facilitando codebases modulares e 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 maneira diferente por motores JavaScript mais antigos ou ferramentas de build. Essa distinção é particularmente importante em ambientes onde arquivos de módulo e script coexistem.