一、node模块化理解
Node.js采用的是CommonJs规范,在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。
Node模块的分类:
- 核心模块(已经封装好的内置模块);
- 自己定义的模块;
- 第三方的模块(npm下载下来的);
在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用。
1.require
require
函数用来在一个模块中引入另外一个模块。传入一个模块名,返回一个模块导出对象。用法:
let cc = require("模块名")
,其中模块名可以用绝对路径也可以用相对路径,模块的后缀名.js可以省略。let cc1 = require('./main.js') let cc2 = require('home/src/main.js') let cc3 = require('./main')
require()函数用两个作用:
- 执行导入的模块中的代码;
- 返回导入模块中的接口对象;
index.js文件
let a = require('./index1')
index1.js文件
let s1 = {username:"学生"} console.log(s1) module.exports = s1
2.exports 和module.exports
exports
对象用来导出当前模块的公共方法或属性,其他的模块通过require
函数使用当前模块时得到的就是当前模块的exports
对象。系统默认设置了:exports = modules.exports
module.exports
用来导出一个系统默认对象,没有指定对象名,常见于修改模块的原始导出对象。
index.js
let a = require('./index1') console.log(a)
index1.js
let a = 123; let c = 789; let s1 = {username:"学生"} console.log(s1) //exports就是默认导出的对象 exports.a = a; module.exports.c = c;
3.模块的初始化
一个模块中的JS代码仅在模块第一次被使用时执行一次,并且在使用的过程中进行初始化,之后缓存起来便于后续继续使用。