exports 和 module.exports 你要了解一些概念和为什么
默认导出空对象:
在没有任何内容导出的时候,默认会导出 module.exports 一个空对象 "{}"
require获取文件路径时,可以不加后缀名,默认的后缀名是"js"
exports 和 module.exports 相等原因
系统默认设置:
exports = module.exports
,把exports
的内存地址指向module.exports
的内存地址这两个导出都是在同一个对象里面,说明
exports
和module.exports
指向的是同一个对象
修改导出的值,结果无变原因
在导出后,我们把
exports = {name:'小江'}
重新赋值,发现改了后发现结果并无变化原因是系统默认导出找的是
module.exports
,module.exports
的值还是{a:1,c:3}
修改导出的值,如何才能改变结果?
既然修改exports不能改变值,那就修改module.exports
的值看看能不能改成功?
系统看的是module.exports
,修改了 module.exports
的值 结果是肯定会改变
exports和module.exports 使用注意
使用
exports
时,只能单个设置属性exports.a = a;
使用
module.exports
时,可以单个设置属性,也可以整个赋值 (只是做演示)要是直接给 module.exports 赋值,会覆盖掉前面设置 module.exports 的值
模块初始化
一个模块中的JS代码仅仅在模块第一次被使用时执行一次,并且在使用的过程中进行初始化,之后缓存起来便于后续继续使用
作者:前端酱紫
链接:https://juejin.cn/post/7022675855956508685