1.初始exports和module.exports是指向同一块内存区域,其内容都是一个空对象。
以图为例:左边为定义并导出的模块 右边为导入的模块
图示:

我们在控制台打印:exports === module.exports // 输出是 true
所以两种写法的效果是一样的
写法一:mymodule.js
exports.fn = function(){ }
exports.a = 3.1415926
写法二:mymodule.js
module.exports.f = function(){ }
module.exports.pi = 3.1415926
2.exports和module.exports传入不同内容会出现的情况
1.如果exports.a=100 module.exports={b:200},此时它们就分开了
图示:

导入时,以moudle.exports为准. 导出的结果会是{b:200}
2.如果exports.a=100 module.exports.b=200,此时它们就在同一个对象上了
图示:

导入时,以moudle.exports为准. 此时导出的结果是{a:100,b:200}
3.如果exports={a:100} module.exports.b=200,此时它们分开了
图示:

导入时,以moudle.exports为准. 此时导出的结果是{b:200}
结论:
那么我们在导出模块过程中,建议只用一种方式(建议直接使用module.exports)
本文详细探讨了Node.js中exports和module.exports的使用与区别。初始时,两者指向相同,但当它们被赋予不同内容时,导出的对象将依据module.exports。建议在导出模块时统一使用module.exports以避免混淆。分析了三种不同情况下的导出效果,并给出了导入时的行为。总结指出,在模块导出过程中,推荐直接使用module.exports进行导出。
1070

被折叠的 条评论
为什么被折叠?



