1.模块化规范
- 什么是模块化
- 一个js文件可以导入另一个js文件
- 模块化的好处
- 1.将功能分离出来 : 一个js文件只负责一个功能,如果摸个功能出现了文件,方便查找和修改
- 2.按需求导入 : 用到某个功能就导入某个功能,模块化功能是渐进式框架的共同特征
- 3.变量污染 : 一个js文件都是一个固定的作用域,互不污染
2.模块化语法
-
CommonJS 规范:nodejs 默认支持的
-
ES6规范:前端的ES6语法支持的规范
-
CMD 和 AMD 模块化规范 : ES6语法之前的模块化语法规范,现在已经几乎不用了
3.CommonJS规范实现模块化语法
CommonJS规范只有两句话
-
模块必须要使用
require()导入 -
模块必须要使用
module.exports导出
注意 : 这两个语法都是nodejs环境自带的全局语法
- 导出模块语法一般放在js文件最底部,只需要导入一次
- 开发中,不需要吧模块化全部的变量全部导出
4.模块的缓存机制
- 1.当一个模块第一次会加载时,nodejs会执行里面的js代码,并且导出模块
- 2.nodejs会将导出的模块放入缓存中
- 3.当重复导入一个模块的时候,nodejs会先从缓存中读取模块。 如果缓存中有,就从缓存读取。缓存没有重复步骤1
5.node.js三种模块和require()加载原理
-
1.nodejs有三种模块
-
第一种: 核心模块、内置模块
-
nodejs作者写的,这些模块js文件会随着安装nodejs的时候一起安装。因此我们可以直接使用,而无需下载。
- 例如: fs 、path、http都是核心模块
-
-
第二种:第三方模块
-
npm官网上面的模块,这些都是大佬写的模块。需要下载后使用
- 例如: express、cors、bod-parser
-
-
第三种:自定义模块
- 我们自己写的js文件
-
-
2.require('文件路径')加载原理
-
(1)自定义模块:必须要写文件路径,
require()会得到这个模块里面的module.exports对象 -
(2)第三方模块 :写模块名。 nodejs会自动从你的node_module文件夹里面去找这个模块的名字,然后执行模块里面的
index.js代码,得到里面的module.exports- 如果当前目录没有module.exports就会从上级目录找,以此类推。一直找到你的磁盘根目录。 还找不到就会报错提示 模块不存在(有点类似于变量作用域就近原则)
-
(3)核心模块:写模块名。 nodejs会自动从你的node安装包路径里面去找。
-