zoukankan      html  css  js  c++  java
  • node.js中exports与module.exports的区别

    1、rocker.js文件

     exports.name = function () {
        console.log('my name is luoqian')
    }
    

    2、在另一个文件中
    var rocker = require('./rocker.js')
    rocker.name()
    // 'my name is luoqian'

    3、Module.exports是真正的接口,exports是它的辅助工具,最终返回给调用的是Module.exports而不是exports。
    4、所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。
    5、Module.exports 与 exports到底用哪个比较好,为什么要这样设计?

    Module.exports = {}
    exports = Module.exports
    
    

    如果exports的属性被修改,由于指向的是同一快内存地址,所以Module.exports也会被修改。如果当exports被覆盖时,exports会指向一块新的内存,Module.exports还是指向原来的内存,所以最后两个输出不一样,我们在require时返回的是module.exports而不是exports。
    所以当我们是添加到exports的属性,那么exports和module.exports都可以。而如果是直接赋值就要赋给Module.exports。

    参考资料:1、http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html
    2、http://cnodejs.org/topic/5231a630101e574521e45ef8

  • 相关阅读:
    Redis常见数据类型
    MYSQL常见可优化场景
    算术切片
    找数组里没出现的数
    不同路径和(II)
    不同路径和
    最小路径和
    强盗抢房子
    丑数(2)
    判断子序列
  • 原文地址:https://www.cnblogs.com/luoqian/p/7095215.html
Copyright © 2011-2022 走看看