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)