CommonJS规范 module.export与exports区别

const  exports= module.exports; 
exports只是module.exports的快捷方式

在index.js里写入

exports.test = 100;//意思就是直接输出一个test变量


在main 里引入

const mod=require('.index');
console.log(mod.test);
在cmd 输出 F:\nodeFile\ main.js
100

但是在index.js里如果这么写的话,exports就是一个对象,和module.exports没有啥关系了,比如:

exports = {
    a:1,
    b:2,
    test:100
};

在输出里是拿不到test的值得.这时要加上  module.

module.exports = {
    a:1,
    b:2,
    test:100
};

内部原理:

  • exports = module.exports = {};  
     
  • exports是module.exports的一个引用

  • require引用模块后,返回给调用者的是module.exports而不是exports

  • exports.xxx,相当于在导出对象上挂属性,该属性对调用模块直接可见

  • exports =相当于给exports对象重新赋值,调用模块不能访问exports对象及其属性

  • 如果此模块是一个类,就应该直接赋值module.exports,这样调用者就是一个类构造器,可以直接new实例

小结:exports会默认设置为module.exports的快捷方式,可以往里面添加属性( exports.test ),但是不可以修改它的指向,修改了他的指向,他就和普通的对象没有啥差别,因为在common.js里模块对外输出永远是module.exports,如果exports改变了指向之后,就会不在生效。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值