JavaScript .mjs 介绍:ESM 模块化后缀

介绍

.mjs = ECMAScript Module(ESM)专用后缀,用来强制文件以ES模块化规范运行。

特点

  1. 固定语法:只能用 import / export,不能用 require()、module.exports(CommonJS语法)
    // 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