欢迎来到ZeroAO的博客

竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
扩大
缩小

module.exports 与 exports

在 Node 中,每个模块内部都有一个自己的 module 对象
该 module 对象中,有一个成员叫:exports 也是一个对象
也就是说如果你需要对外导出成员,只需要把导出的成员挂载到 module.exports 中

我们发现,每次导出接口成员的时候都通过 module.exports.xxx = xxx 的方式很麻烦,点儿的太多了
所以,Node 为了简化你的操作,专门提供了一个变量:exports 等于 module.exports

var module = {
  exports: {
    foo: 'bar',
    add: function
  }
}

也就是说在模块中还有这么一句代码
var exports = module.exports

module.exports.foo = 'bar'

module.exports.add = function (x, y) {
  return x + y
}

两者一致,那就说明,我可以使用任意一方来导出内部成员
console.log(exports === module.exports)

exports.foo = 'bar'
module.exports.add = function (x, y) {
  return x + y
}

当一个模块需要导出单个成员的时候
直接给 exports 赋值是不管用的

 

给 exports 赋值会断开和 module.exports 之间的引用
同理,给 module.exports 重新赋值也会断开

真正去使用的时候:
   导出多个成员:exports.xxx = xxx
   导出多个成员也可以:module.exports = {
                       }
   导出单个成员:module.exports


谁来 require ,谁就得到 module.exports
默认在代码的最后有一句:
一定要记住,最后 return 的是 module.exports
不是 exports
所以你给 exports 重新赋值不管用,
return module.exports

 

posted on 2020-05-22 17:36  Zeroao  阅读(212)  评论(0编辑  收藏  举报

导航

Live2D