0
点赞
收藏
分享

微信扫一扫

node中关于exports与module.exports的区别

前言

使用require时候,关于exports与module.exports总感觉似懂非懂,今天特意仔细了解了一下。

问题

1、require是异步还是同步
2、exports与module.exports的区别

1、require是异步还是同步

答案是同步的

2、exports与module.exports的区别

其实当js require一个文件时候,会给这个文件同时生成一个exports和module对象,而module又有一个exports属性,他们都指向同一块内存区域

console.log(module.exports===exports)
//true


下面用代码 进行一下演示

//b.js
console.log(exports);
console.log(module.exports);
exports.a='我是exports'
module.exports.a='我是module.exports'
//a.js
const b=require('./b');
console.log(b)
//{ a: '我是module.exports' }

代码中清楚看出当我们使用require时候,引用的是module.exports,而不是exports,有时候我们会看到下面的写法

exports=module.exports=something;

当module.exports指向新的地址,断开了与exports的联系,因此重新让他俩指向统一地址即可。

使用建议

1、当需要直接暴露出一个函数时候,只能使用module.exports=function(){}
2、暴露某一个参数时候使用module.exports.a和exports.a都可以。
综上为了防止使用混乱,建议直接使用module.exports

举报

相关推荐

0 条评论