Node.js里exports和module.exports的区别

很早之前我就对exportsmodule.exports之间的区别产生了好奇,因为用起来感觉不出什么区别但却又是不同的用法。实际上,exportsmodule.exports的引用

换句话说,模块最终返回的是module.exports给调用者而不是exports

用图举例说明,一开始exportsmodule.exports一样指向一个空对象
在这里插入图片描述

如果我们想对外暴露一个函数,例如:

function foo(){
	console.log('hello world');
}

module.exports.foo = foo;

那么这个时候就变成了下图:
在这里插入图片描述

因为exportsmodule.exports的引用,所以到现在为止,这两个所代表的都还是同一个对象。

但是,如果当我让module.exprots指向其他的对象,那么情况就不一样了,例如:

function foo(){
	console.log('hello world');
}

module.exports.foo = foo;

let myObject = {};
module.exports = myObject; 

这段代码相当于在之前的代码之后为module.exports重新赋了值。那么现在,两个模块的关系如下图:

在这里插入图片描述

可以看出这时exportsmodule.exports指向了不同的对象,这也说明了exports就是module.exports的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值