Die Dateiendung .mjs wird für ECMAScript-JavaScript-Module verwendet. Sie signalisiert JavaScript-Laufzeitumgebungen, sowohl in Browsern als auch in Node.js, dass die Datei als Modul behandelt werden soll. Dies ist von entscheidender Bedeutung, da Module eine andere Semantik als herkömmliche JavaScript-Skripte aufweisen. Module besitzen einen eigenen Gültigkeitsbereich (Scope), was bedeutet, dass innerhalb eines Moduls deklarierte Variablen und Funktionen nicht automatisch im globalen Scope verfügbar sind. Sie müssen explizit exportiert werden, um von anderen Modulen verwendet werden zu können. Ebenso muss Code aus anderen Modulen explizit importiert werden. Dieser Mechanismus fördert die Code-Organisation, die Wiederverwendbarkeit und vermeidet Namenskonflikte. Die Verwendung von .mjs ermöglicht es JavaScript-Engines, den Code korrekt als Modul zu parsen und auszuführen, wodurch Funktionen wie import- und export-Anweisungen aktiviert werden. Dies ist ein wesentlicher Bestandteil der modernen JavaScript-Entwicklung, der modulare Codebasen und ein besseres Abhängigkeitsmanagement erleichtert. Die Verwendung von .mjs hilft zudem dabei, Moduldateien von herkömmlichen JavaScript-Skriptdateien (die üblicherweise die Endung .js verwenden) zu unterscheiden, die von älteren JavaScript-Engines oder Build-Tools möglicherweise anders interpretiert werden. Diese Unterscheidung ist besonders in Umgebungen wichtig, in denen sowohl Modul- als auch Skriptdateien koexistieren.