主要区别:
1、module.exports 初始值为一个空对象 {};
2、exports 是指向的 module.exports 的引用;
3、require() 返回的是 module.exports 而不是 exports;
node会在运行时自动给模块文件添加两个属性:exports和module.exports;
开始时他们都指向同一个空对象:
image.png image.png
改变exports的指向:
image.png image.png
所以说exports和module.exports并没有什么联系,只是开始时指向的是同一个对象!
require引入模块时引入的是module.exports;
我们可以看到这样的写法:
exports = module.exports = {...}
上面的写法等价于
module.exports = {...};
exports = module.exports;
网友评论