require引用的是module.exports
这个对象,而不是exports
对象
当我们在nodejs中导出某个值的时候,经常会使用下面两种下法
// 写法一,通过exports引用module.exports导出
// 这里如果exports = a,它会切掉指向module.exports指向地址的引用,所以不会改变module.exports对象的内容
exports.a = function() {
console.log('a')
}
// 实际上只是
let exports;
exports = module.exports = {}
exports.a = function() {
console.log('a')
}
的简化而已
// 写法二,直接导出
module.exports = { a: 'a' }
总结:两者的区别在于exports
是变量,指向module.exports
,而module.exports
是module
对象上exports
属性{},共同点最终导出的都是module.exports
的值