L'estensione di file .mjs è utilizzata per i moduli JavaScript ECMAScript. Essa segnala che il file deve essere trattato come un modulo dai runtime JavaScript, sia nei browser che negli ambienti Node.js. Questo è fondamentale poiché i moduli possiedono una semantica diversa rispetto agli script JavaScript tradizionali. I moduli hanno un proprio scope, il che significa che le variabili e le funzioni dichiarate all'interno di un modulo non sono automaticamente disponibili nello scope globale. Devono essere esplicitamente esportate (export) per essere utilizzate da altri moduli. Allo stesso modo, per utilizzare codice proveniente da altri moduli, è necessario importarlo esplicitamente (import). Questo meccanismo esplicito di importazione/esportazione promuove l'organizzazione del codice, la riusabilità e previene conflitti di denominazione. L'uso di .mjs consente ai motori JavaScript di analizzare ed eseguire correttamente il codice come modulo, abilitando funzionalità come le istruzioni import ed export. Rappresenta una parte cruciale dello sviluppo JavaScript moderno, facilitando codebase modulari e una migliore gestione delle dipendenze. L'uso di .mjs aiuta anche a differenziare i file modulo dai file script JavaScript tradizionali (che tipicamente utilizzano l'estensione .js), i quali potrebbero essere interpretati diversamente da motori JavaScript o strumenti di build più datati. Questa distinzione è particolarmente importante negli ambienti in cui coesistono sia file modulo che file script.