目录
1、模块化的基本概念
1.1 什么是模块化
编程领域的模块化就是遵守固定的规则,把一个大文件拆成独立并且相互依赖的多个小模块
1.2 将代码进行模块化拆分的好处
(1)提高代码的复用性
(2)提高代码的可维护性
(3)实现按需加载
1.3 模块化规范
对代码进行模块化拆分与组合时需要遵守的规则
2、Node.js中的模块化
2.1 Node.js中模块的分类
根据来源不同分为三大类
(1)内置模块(nodejs官方提供 fs path http url等)
(2)自定义模块(用户自己创建的每个.js文件)
(3)第三方模块(由第三方创建出来的,使用前需要下载)
2.2 加载模块
第三方模块和内置模块直接写模块名,自定义模块需要加路径
注意:使用require()加载其他模块,会执行被加载模块的代码
/* 内置模块 */
let http = require('http')
// let fs = require('fs')//文件系统模块
let path = require('path')//路径相关操作
/* 第三方模块 */
const mysql = require("mysql");
/* 用户自定义模块 */
const static1=require('./index')
2.3 使用require注意点
可以省略.js后缀
2.4 node.js中的模块作用域
2.4.1 什么是模块作用域
和函数作用域类似,只有在模块内才能被访问,这种模块级别的访问限制,就是模块作用域
2.4.2 模块作用域的好处
防止全局变量污染问题
2.5 向外共享模块作用域中的成员
2.5.1 module对象(控制台打印的module对象)存储了当前模块的有关信息
Module {
id: '.',
path: 'E:\\goodProgram\\day0823\\js',
exports: { name: 'lisa', age: 12, say: [Function: say] },
parent: null,
filename: 'E:\\goodProgram\\day0823\\js\\person.js',
loaded: false,
children: [],
paths: [
'E:\\goodProgram\\day0823\\js\\node_modules',
'E:\\goodProgram\\day0823\\node_modules',
'E:\\goodProgram\\node_modules',
'E:\\node_modules'
]
}
2.5.2 module.exports对象
1、 将模块内的成员共享出去,供外界使用,默认情况下,module.exports={}
2、外界使用require()方法导入自定义模块时,得到的就是module.exports所指的对象
module.exports={
name:'lisa',
age:12,
say:function(){
console.log(this.name+'在自我介绍');
}
}
2.5.3 共享成员的注意点
使用require()方法导入模块时,导入的结果永远以module.exports指向的对象为准
2.5.4 exports对象
是module.exports的简写 指向同一个对象
3、exports和module.exports的使用误区
require导入的永远都是module.exports指向的对象
不建议同一模块中同时使用exports和module.exports
4、Node.js中的模块规范化
Node.js遵循CommonJS模块化规范,CommonJS规定了模块的特性和各模块之间如何相互依赖
(1)每个模块内部、module变量代表当前模块
(2)module变量是一个对象,他的exports属性(module.exports)是对外接口
(3)加载某个模块就是加载该模块的module.exports属性 ,require用于加载对应的模块