module.exports和exports的区别
在学习Node.js
时,经常能看到两种导出模块的方式:module.exports
和exports
在文件a.js中用exports或module.exports导出的对象(方法、变量),可以在另一个文件b.js中通过require('./a')引用
module
和exports
是Node.js
给每个js文件内置的两个对象。可以通过console.log(module)
和console.log(exports)
打印出来。如果你在main.js中写入下面两行,然后运行$ node main.js
:require
引入的对象本质上是module.exports
。这就产生了一个问题,当 module.exports
和exports
指向的不是同一块内存时,exports
的内容就会失效比如:
module.exports = {name: '叔叔'};
exports = {name: '阿姨'}
此时
module.exports
指向了一块新的内存(该内存的内容为{name: '叔叔'})
,exports
指向了另一块新的内存(该内存的内容为{name: '阿姨'}
)。require
得到的是{name: '叔叔'}
。结果是
引入 let people = require('./people');
console.log(people);//输出:{name: '叔叔'}