exports和module.exports的区别
- 每个模块中都有一个module对象
- module对象中有一个exports对象
- 我们可以把需要导出的成员都挂载到module.exports接口对象中
- 也就是
module.exports.xxx=xxx
的方式 - 但是每次都
module.exports.xxx=xxx
很麻烦,点儿的太多了,所以node为了你方便,同时在每一个模块中都提供了一个成员叫:exports
-
exports===module.exports
结果为true - 所以对于
module.exports.xxx=xxx
完全可以:exports.xxx=xxx
来写 - 当一个模块需要导出单个成员的时候,只能使用
module.exports=xxx
的方式 - 因为每个模块最终向外
return
的是module exports
- 而
exports
只是module.exports
的一个引用 - 所以,即便你为
exports
重新赋值,也不会影响module.exports
- 但是有一种赋值方式比较特殊:
exports=module.exports
这个用来重新建立引用关系的
总结
-
导出多个成员
exports.b='hello'
exports.c=function(){ console.log('ccc') }
exports.d={ foo:'bar' }
-
只导出单个成员
module.exports='hello'
-
下面代码是错误的
module.exports='hello'
module.exports=function(){ return x+y }
-
下面代码是正确的
module.exports={
add:function(){
return x+y},
str:'hello'
}