美文网首页
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