从 .mjs 到 ESM,彻底理解现代 JavaScript 模块文件
打开一个较新的 Angular 工程,在 node_modules/@angular/core/fesm2022 目录里,经常能看到 core.mjs、testing.mjs,旁边还放着对应的 core.mjs.map。查看某些前端工具的配置文件,也会遇到 vite.config.mjs、eslint.config.mjs、postcss.config.mjs。这些文件内部仍然写着熟悉的 JavaScript 代码,却没有使用最常见的 .js 扩展名,于是很容易产生几个连锁疑问,.mjs 是不是一种新语言,是不是编译后的 JavaScript,是不是只能由 Node.js 执行,或者字母 m 是否代表 minified。