.mjs 文件扩展名专门用于 ECMAScript JavaScript 模块。它向 JavaScript 运行时(如浏览器和 Node.js 环境)明确指示该文件应作为模块处理。这非常重要,因为模块与传统的 JavaScript 脚本(Script)在语义上存在显著差异。模块具有独立的作用域,这意味着在模块内部声明的变量、函数或类不会自动进入全局作用域,从而有效避免了全局命名空间的污染。为了在模块之间共享代码,开发者必须使用显式的导出(export)和导入(import)机制。这种显式的依赖管理方式极大地提升了代码的可维护性、重用性,并简化了复杂项目的组织结构。通过使用 .mjs 扩展名,JavaScript 引擎能够正确解析并启用现代语法特性,如顶层 await 以及 import/export 语句。它是现代 JavaScript 开发生态系统中的核心组成部分,有助于实现更高效的依赖管理。此外,.mjs 还能将模块文件与传统的 .js 脚本文件区分开来,防止旧版引擎或构建工具产生歧义,这在模块化代码与遗留脚本共存的环境中尤为关键。