Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
1.模块化
每个模块内部有一个自己的module对象
module有个成员exports 也是一个对象
2.模块之间如何协同
- 使用require引入
- 引入的本质是引用文件
- 导入的是文件夹,去找哪些文件
先找package.json main属性对应的文件
找不到找index.js
3.模块加载
- 本质
就在加载js文件 - 寻找文件顺序
1.缓存
使用这个模块,我们主要是为了使用导出的对象
构建这个对象的过程,只执行一次
引入一次之后就会把这个对象放入缓存中
防止模块的重复加载
提高模块引入的效率
2.核心模块
任何一个第三方模块都不会和核心模块重名
3.自定义模块
加上 ./ 路径
4.第三方模块
当前目录node_modules文件(一个项目中有且仅有一个)
找不到再去父级找node_modules
5.都没找到就会报错 - 执行文件
如果是缓存的话就不会执行
加载这个模块 - 返回模块暴露的对象
module.exports
exports是module.exports的浅拷贝
4.模块化好处
- 减少命名冲突
- 提高代码的可维护性和灵活性
- 提升代码的复用率
- 高内聚 低耦合