export和module.exports

exports和module.exports

  1. node中,每个模块内部都有一个自己的module对象,而在module中,也有一个对象叫: exports也是一个对象
    比如:

    var  module = {
           exports: {
                 foo:'bar',
                 add: function(){}
           }
    }
    
  2. 如果需要对外导出对象,只要把导出的成员挂载到module.exports中,如果每次访问都要通过module.exports.xxx = xxx 所以有如下

   module.exports = function(){}
  1. 当一个模块需要导出单个成员的时候,直接exports=xxx是不管用的
  2. 对象最终返回的还是module.exports,所以给exports赋值是不管用的
  3. exports = module.exports会重新建立引用

总结

exportsmodule.exports的区别
  • 每个模块都有一个module对象
  • module对象中有一个exports对象
  • 我们可以把需要导出的成员都挂载到module.exports接口对象中
  • 也就是: module.exports.xxx = xxx
  • 但是每次都 module.exports.xxx = xxx 很麻烦,点儿的太多了
  • 所以Node为了你方便,同时在每一个模块中提供了一个成员叫:exports
  • console.log(exports === module.exports) 结果为true
  • 所以对于: module.exports.xxx = xxx的方式完成可以: exports.xxx = xxx
  • 当一个模块需要导出单个成员的时候,这个时候必须使用: module.exports.xxx = xxx 的方式
  • 不要使用 exports=xxx不管用
  • 因为每个模块最终向外return的是module.exports
  • exports只是module.exports的一个引用
  • 所以即便你为 exports = xx重新赋值,也不会影响module.exports
  • 但是有一种赋值方式比较特殊: exports=module.exports这个用来重新建立引用关系的
module.exports = {
   a:123
}

//因为return的是module.exports  下面对exports怎么赋值  返回的都是上面的数据

exports.a = 123;
exports.b = 'hello'

//但是下面这种情况特殊   这里表示重新建立exports和module.exports之间的引用关系 
export = module.exports

exports.foo = 'bar'  //此时是有效的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值