ES6 模块 和 CommonJS 模块 就是 JavaScript 语言的 两种格式,CommonJS 模块 是node.js 专用。这两种模块不兼容
语法 | Node.js | ES6 |
---|---|---|
加载 | require() | import |
顺序 | 同步加载 | 异步加载 |
输出 | module.exports | export |
下面以文件形式图解区分:
.mjs
文件总是以 ES6 模块加载.cjs
文件总是以 CommonJS 模块加载.js
文件的加载取决于package.json
里面type
字段的设置
[注意]
: ES6 模块与 CommonJS 模块尽量不要混用。混用乱加载会报错
同时支持两种格式的模块
:配置package.json
文件的exports
字段,指明两种格式模块各自的加载入口
。
"exports":{
"require": "./index.js",
"import": "./esm/wrapper.js"
}
上面代码指定require()和import,加载该模块会自动切换到不一样的入口文件。