JavaScript .mjs 介绍:ESM 模块化后缀 作者:马育民 • 2026-06-03 12:39 • 阅读:10022 # 介绍 **.mjs = ECMAScript Module(ESM)专用后缀**,用来强制文件以**ES模块化规范**运行。 # 特点 1. **固定语法:只能用 import / export**,不能用 `require()`、`module.exports`(CommonJS语法) ```js // demo.mjs export const hello = 'hello' import { hello } from './demo.mjs' ``` 2. **Node.js里:后缀=.mjs → 自动识别ESM**,**不受package.json的`"type":"module"`影响**; - `.js`默认是CommonJS,只有配`"type":"module"`才变ESM; - `.cjs`强制CommonJS(require)。 3. **默认严格模式(use strict)**,顶层`this === undefined`,变量不会泄露到全局。 4. **浏览器引入**:`<script type="module" src="xxx.mjs">`。 # 三种JS后缀快速区分 |后缀|模块规范|导入导出| |----|----|----| |`.mjs`|ESM(ES6标准)|import / export,**强制ESM**| |`.cjs`|CommonJS|require / module.exports,**强制CJS**| |`.js`|看package.json.type|无type→CJS;type:module→ESM| # 两种使用ESM的写法 1. 改后缀为`.mjs`(单文件生效,推荐零散脚本) 2. `package.json` 添加`"type":"module"`,目录下所有`.js`自动变ESM(整项目统一) # 补充:工程领域MJS 土建 **MJS工法(Metro Jet System)**:全方位高压旋喷注浆地基加固工艺(非代码)。 需要我给你一份可直接运行的mjs示例代码吗? 原文出处:/show_1GW3QeE4YtoM.html