在Nodejs当中,每个模块都相当于被一个function (exports, require, module, __filename, __dirname) {}
函数包裹,而这个函数提供了多个参数,其中 就有module.exports和exports,这是我们导出模块的两种方式;
首先
module.exports和exports刚开始都是一个空对象,当我们使用exports.name = 'xp'
和module.export.name = 'xp'
时,指向同一个内存空间,此时module.exports和exports是等价的;
但是
当我们引入模块时,实际上是从module.exports
上取值,如果module.exports和exports指向不同的内存空间,那么exports的值就会无效;
举个例子:
exports = { name: 'xp1'}
module.exports = { name: 'xp2' }
// 此时引入该模块将得到 { name: 'xp2' }
再举个栗子:
exports.name = 'xp1';
module.exports = 'xp2';
// 此时引入该模块得到 'xp2'
最后
我们在Node中使用模块化的时候,推荐使用module.exports = {…}或者export.xxx = … 的方式来导出模块;