ES Module在nodeJS下与CommonJS的交互
程序员文章站
2022-04-25 15:46:52
...
ES Module在nodeJS下与CommonJS的交互
一、ES Module导入CommonJS
// es-module.mjs
import mod from "./common.js"
console.log(mod)
// common.js
module.exports = {
foo:"this is foo"
}
执行node --experimental-modules es-module.mjs
,打印结果如下:
得出结论,ES Module中可以导入CommonJS模块。
// common.js
exports.foo = "this is foo"
执行node --experimental-modules es-module.mjs
,打印结果与之前一致。
注意,CommonJS始终只会导出一个默认的成员。
// es-module.mjs
import { foo } from './common.js'
console.log(foo)
结果如下:
意思大概就是common.js并没有导出一个叫foo的命名成员。
所以不能直接提取CommonJS模块中的成员。也再次说明,import不是对导出对象的解构。
二、CommonJS导入ES Module
// es-module.mjs
export const bar = "this is bar"
//common.js
const mod = require("./es-module.mjs")
console.log(mod)
执行:node --experimental-modules common.js
,结果如下:
报错的意思大概就是:不能通过require的方式去载入一个ES Module模块。
在node环境中不允许在CommonJS中通过require方式去载入ES Module模块,但是在其他环境例如webpack打包环境是可以的。
三、总结
- ES Module可以导入CommonJS模块
- CommonJS中不能导入ES Module模块
- CommonJS始终只会导出一个默认成员
- 注意import不是解构导出对象
下一篇: Django ---- 管理器