exports 和 module.exports 你要了解一些概念和为什么

914 阅读1分钟

默认导出空对象:

  1. 在没有任何内容导出的时候,默认会导出 module.exports 一个空对象 "{}"
  2. require获取文件路径时,可以不加后缀名,默认的后缀名是"js" 在这里插入图片描述

exports 和 module.exports 相等原因

  1. 系统默认设置:exports = module.exports ,把exports 的内存地址指向module.exports的内存地址
  2. 这两个导出都是在同一个对象里面,说明 exportsmodule.exports 指向的是同一个对象 在这里插入图片描述

修改导出的值,结果无变原因

  1. 在导出后,我们把 exports = {name:'小江'} 重新赋值,发现改了后发现结果并无变化
  2. 原因是系统默认导出找的是 module.exportsmodule.exports 的值还是 {a:1,c:3}

在这里插入图片描述

修改导出的值,如何才能改变结果?

既然修改exports不能改变值,那就修改module.exports 的值看看能不能改成功? 系统看的是module.exports,修改了 module.exports的值 结果是肯定会改变

在这里插入图片描述

exports和module.exports 使用注意

  1. 使用exports时,只能单个设置属性 exports.a = a;

在这里插入图片描述

  1. 使用module.exports时,可以单个设置属性,也可以整个赋值 (只是做演示)

    要是直接给 module.exports 赋值,会覆盖掉前面设置 module.exports 的值

在这里插入图片描述

模块初始化

  1. 一个模块中的JS代码仅仅在模块第一次被使用时执行一次,并且在使用的过程中进行初始化,之后缓存起来便于后续继续使用

在这里插入图片描述