介绍
.mjs = ECMAScript Module(ESM)专用后缀,用来强制文件以ES模块化规范运行。
特点
- 固定语法:只能用 import / export,不能用
require()、module.exports(CommonJS语法)// demo.mjs export const hello = 'hello' import { hello } from './demo.mjs' - Node.js里:后缀=.mjs → 自动识别ESM,不受package.json的
"type":"module"影响;.js默认是CommonJS,只有配"type":"module"才变ESM;.cjs强制CommonJS(require)。
- 默认严格模式(use strict),顶层
this === undefined,变量不会泄露到全局。 - 浏览器引入:
<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的写法
- 改后缀为
.mjs(单文件生效,推荐零散脚本) package.json添加"type":"module",目录下所有.js自动变ESM(整项目统一)
补充:工程领域MJS
土建 MJS工法(Metro Jet System):全方位高压旋喷注浆地基加固工艺(非代码)。
需要我给你一份可直接运行的mjs示例代码吗?