module.exports与exports的区别
Posted yinonglee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了module.exports与exports的区别相关的知识,希望对你有一定的参考价值。
1. 每一个node.js执行文件,都自动创建一个module对象,module对象有一个叫exports的属性,module.exports 初始值为一个空对象 {},就像这样:
var module = { exports: {} };
2. exports对象是module.exports对象的快捷方式,是指向的 module.exports 的引用,相当于 : exports = module.exports;
3. require() 返回的是 module.exports 而不是 exports
要导出该模块的属性或方法时,我们可以这样:
module.exports.test = test;
当然,我们也可以给exports添加属性:
exports.test = test;
由于exports和module.exports指向同一块内存,就相当于该属性添加到module.exports上;但是我们不能直接用对象字面量给exports赋值,这样exports就指向了新的内存,切断了exports与module.exports之间的联系,这时exports和普通的对象就没有区别了,无法被导出:
exports = { test: 1 }
如果要直接使用对象字面量,我们可以直接把它赋值给module.exports:
module.exports = { test: 1 }
以上是关于module.exports与exports的区别的主要内容,如果未能解决你的问题,请参考以下文章
module.exports与exports,export与export default的区别
module.exports,exports,export和export default,import与require区别与联系