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区别

module.exports 与 exports的区别

module.exports与exports,export与export default的区别

module.exports,exports,export和export default,import与require区别与联系

module.exports与exports区别

exports与module.exports的区别,export与export.defult区别