美文网首页
node 中module.exports和exports的区别

node 中module.exports和exports的区别

作者: Amy_yqh | 来源:发表于2018-05-24 11:55 被阅读0次
在学习node的时候,遇到module.exports和exports,傻傻分不清这2者的区别,通过看文档以为别人的帖子,大概明白了他们之间的区别与联系,汇总一下
在这先做一个说明:
1、module.exports 初始值为一个空对象 {};
2、exports 是指向的 module.exports 的引用;
3、require() 返回的是 module.exports 而不是 exports;
下图就是exports 与module.exports最开始的时候的状态
image.png
重点来了:!!!!

exports只是module.exports的辅助方法。你的模块最终返回module.exports给调用者,而不是exports。
exports所做的事情是收集属性,如果module.exports当前没有任何属性的话,exports会把这些属性赋予
module.exports。如果module.exports已经存在一些属性的话,那么exports中所用的东西都会被忽略。
第一种情况:使用exports
a.js
exports.hi = {
    a:1
}
b.js
var result = require('./a')
console.log(result)
//结果是
image.png
第二种情况:
a.js
module.exports = {
    b:1
}
b.js
var result = require('./a')
console.log(result)
//结果是
image.png
第三种情况
a.js
module.exports = {
    b:1
}
exports.hi = {
    a:1
}

b.js
var result = require('./a')
console.log(result)
//结果是
image.png
第四种情况
a.js
exports.hi = {
    a:1
}
module.exports.hello = {
    b:1
}
b.js
var result = require('./a')
console.log(result)
//结果是
image.png
第四种情况,就相当于是2者都给exports这个属性添加属性
至于用哪个比较好呢,其实我也不清楚,我个人建议,如果你那个js文件是单独的一个方法等,可以使用exports,如果比较多方法属性等的,可以使用moduel.exports来暴露这个对象。为了保险起见,为了以后鬼知道会不会突然添加几个方法呢,还是用module.exports来比较踏实。
初学node有不对的地方,希望能得到朋友小哥哥,小姐姐们的指出,感谢!

相关文章

网友评论

      本文标题:node 中module.exports和exports的区别

      本文链接:https://www.haomeiwen.com/subject/qeojjftx.html