node中的模块化
基本概念
在nodejs中,应用由模块组成,nodejs中采用commonJS模块规范
- 一个js文件就是一个模块
- 每个模块都是一个独立的作用域,在这个文件中定义的变量、函数、对象都是私有的,对其它文件不可见。
node中模块分类
内置模块
- 由node本身提供,不需要单独安装(npm),可直接引入使用
自定义模块
- 由我们自己来创建定义的,比如:tool.js、user.js
第三方模块
内置模块
- fs: 文件操作模块
- http: 网络操作模块
- path: 路径操作模块
- url: 解析地址的模块
- querystring: 解析参数字符串的模块
- 基本使用: 1 先引入 2 再使用
const fs = require('fs')
自定义模块
- 由开发人员创建的模块(js文件)
- 基本使用: 1 创建模块 2 引入模块 3 最后使用
- 注意: 自定义模块的路径必须以./获取…/开头
require('./a')
require('./a.js')
第三方模块
- 第三方模块是由社区或个人提供的
- 比如: mime模块/art-template/jquery…
- 基本使用: 1 先通过npm下载 2 再引入 3 最后使用
模块的导入与导出
模块导入
- 通过require(‘fs’)来加载模块
- 如果是第三方模块,需要先使用npm进行下载
- 如果是自定义模块,需要加上相对路径./或者…/,可以省略.js后缀,如果文件名是index.js那么index.js也可以省略
- 模块可以被多次加载,但是指挥在第一次加载
模块导出
- 在模块的内部,module变量代表的就是当前模块,它的exports属性就是对外的接口,当加载某个模块时,它加载的就是module.exports属性,这个属性指向一个空对象
module.exports
module.exports.num = 123
module.exports.age = 18
module.exports = '123'
module.exports = 'abc'
module.exports与exports,exports是module.exports的引用
注意:给module.exports赋值会切断与exports之间的联系
- 直接添加属性两者皆可。
- 赋值操作时,只能使用 module.exports
console.log( module.exports === exports )
module.exports.num = 123
exports.num = 123
module.exports = {}
模块化的好处
1. 可以提高代码的复用性
2. 可以提高代码的可维护性
3. 可以实现按需加载
|