exports 与module.exports 是nodejs中用来导入导出模块的指令,但是连两者的关系比较复杂,这里简单总结一下
- 每个模块都有一个module对象;
- module对象中有一个exports对象;
- 我们可以把对象需要把导出的成员挂载到module.exports接口对象中;
- 也就是:
的方式;module.exports.xxx = xxx
- node在每一个模块中都提供了一个成员叫做:
并且exports
结果是exports === module.exports
;true
- 所以对于
可以简化为module.exports.xxx = xxx
;exports.xxx === xxx
- 当一个模块需要导出单个成员的时候,必须使用
的方式,不要使用module.exports === xxx
,因为每个模块最终向外exports === xxx
的是return
,而module.exports
只是一个引用;exports
- 所以即使给
重新赋值,也不会影响exports = xx
,除了很暴力的直接把module.exports
,直接重新建立引用关系exports = module.exports