一、Node.js 中模块的分类
二、加载模块
- 使用强大的
require()
方法,可以加载需要的内置模块、用户自定义模块、第三方模块
进行使用
注意
:使用 require() 方法加载其它模块时,会执行被加载模块中的代码。
三、Node.js 中的模块作用域
1. 什么是模块作用域
- 和
函数作用域
类似,在自定义模块中定义的变量、方法
等成员,只能在当前模块内被访问
,这种模块级别的访问限制,叫做模块作用域
。
2. 模块作用域的好处
- 防止了全局变量污染的问题
四、向外共享模块作用域中的成员
1. module 对象
- 在每个 .js 自定义模块中都有一个 module 对象,它里面
存储了和当前模块有关的信息
,打印如下:
console.log(module);
2. module.exports 对象
- 在自定义模块中,可以使用
module.exports
对象,将模块内的成员共享出去,供外界使用。 - 外界用
require()
方法导入自定义模块时,得到的就是 module.exports 所指向的对象。
3. 共享成员时的注意点
- 使用
require()
方法导入模块时,导入的结果,永远以 module.exports 指向的对象为准
。
4. exports 对象
- 由于
module.exports
单词写起来比较复杂,为了简化向外共享成员的代码,Node 提供了exports
对象。默认情况下,exports 和 module.exports 指向同一个对象
。最终共享的结果,还是以module.exports
指向的对象为准。
5. exports 和 module.exports 的使用误区
- 时刻谨记,require() 模块时,得到的永远是
module.exports
指向的对象:
注意
:为了防止混乱,建议大家不要在同一个模块中同时使用 exports 和 module.exports