esm和commonjs规范的区别
1、esm是引用赋值,并且是编译时加载。模块内部引用的变化,会反应在外部
一个模块中可以有多个export,但是只能有一个export default。
export default可以任意指定接受的名称,而export只能固定名称
2、commonjs是值拷贝,并且是运行时加载。输出的内容,就是 exports 对象的属性,模块运行结束,属性就确定了。不会再变了
module.exports 和 exports指向的是一个引用.
console.log(module.exports === exports); // true
如果修改exports = {}或者module.exports的指向,那么就不在全等.
网友评论