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 é importante porque os 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 crucial do desenvolvimento JavaScript moderno, facilitando bases de código 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 (que tipicamente usam a extensão .js), os quais 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 script coexistem.