默认导出空对象:
- 在没有任何内容导出的时候,默认会导出 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代码仅仅在模块第一次被使用时执行一次,并且在使用的过程中进行初始化,之后缓存起来便于后续继续使用