目录
1. 模块化的概念
1.1 模块化的概念
1.2 模块化规范
2. Node.js中的模块化
2.1 模块分类
2.2 模块加载
2.3 模块作用域
2.4 向外共享模块成员
2.5 exports对象
2.6 Node.js中的模块化规范
1. 模块化的概念
1.1 模块化的概念
按照模块指定规则,把一个大文件拆分为一个个小模块。这可提供代码的复用性,可维护性,按需加载。
1.2 模块化规范
如何引入的规范,如何暴露的规范
2. Node.js中的模块化
2.1 模块分类
1. Node.js的内置模块:如fs、path、http模块等
2. 自定义模块:用户写的每个js文件
3. 第三方模块:第三方开发的模块
2.2 模块加载
使用require来加载模块:
// 加载内置模块
const fs = require('fs');
// 加载自定义模块、需要指定路径
const custom = require('./custom.js');// 也可省略.js后缀,require方法会自动补全
// 加载第三方模块
const memont = require('memont');
2.3 模块作用域
和函数作用域类似,在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域。优点在于可以防止污染全局变量。
2.4 向外共享模块成员
1. module对象
每个.js文件都有一个module对象,存储了跟当前文件有关的信息
2. module.exports
在自定义模块中,可以使用module.exports导出当前的文件对象,默认为空对象。
导出指定属性和方法:module.exports.xxx = xxx
注意:require永远以module.exports 指向的最新的对象为准
示例:
2.5 exports对象
由于module.exports单词写起来比较复杂,为了简化向外共享成员的代码,Node提供了exports对象。默认情况下,exports和module.exports指向同一个对象,最终共享的结果,还是以module.exports指向的对象为准。
注意:require()模块时,得到的永远是module.exports指向的对象:
2.6 Node.js中的模块化规范