node中exports 和 module.exports区别

主要区别:

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;

image.png
image.png
image.png

我们可以看到这样的写法:

exports = module.exports = {...}

上面的写法等价于

module.exports = {...};
exports = module.exports;

你可能感兴趣的:(node中exports 和 module.exports区别)