exports和module.exports的区别

时间:2023-03-08 20:17:18

总结:exports是module.exports的指向.

1. module应该是require方法中,上下文中的对象

2. exports对象应该是上下文中引用module.exports的新对象

3. exports.a = xxx 会将修改更新到module.exports对象中

4. exports = xxx 直接改变了 exports的指向

首先我们来举个例子吧,为了更好地理解.

define(function(require,exports,module){
function add(){
console.log('这是add方法');
}
//exports.add = add;
 
//module.exports.add = add;
//module.exports = add;
//exports = add;
 
})
这么简单的一个例子,里面,
exports.add = add;和
module.exports.add = add;其实是一样的,返回的时候返回的都是一个exports对象,而里面都有一个add的方法,所以都可以调用add()的方法.这时候好像他们是没有区别的.
但是如果例子中写的是
module.exports = add;和
exports = add;就相当于把add方法直接赋值给module.exports和exports,而exports只是module的一个指向,所以将来如果返回的不是一个方法,而只是一个内容,但是可以赋值给module.exports,
然后返回的是一个方法.
当然,要注意,如果有多个方法的话,利用直接赋值给module.exports的话,后面的赋值会覆盖前面的赋值.这个小细节要格外注意. 以上是我对exports与module.exports的区别的理解,希望大家可以增加漏点,订正错点.不喜勿喷,谢谢.