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的值