Node之模块实现
Node之模块实现
Node引入模块经历的3个步骤
- 路径分析
- 文件定位
- 编译执行
Node 模块分为两类
- 核心模块(Node提供的模块)
- 文件模块(用户编写的模块)
编译过程的优先级
- 核心模块>文件模块
核心模块(http、fs、path等) 部分在node源代码的编译过程中,编译进了二进制执行文件。在node进程中启动时,部分核心模块就直接加载进了内存中。
文件模块:在运行时动态加载,需要完整的路径分析,文件定位,编译执行 所以比核心模块慢
2.路径形式的文件模块
.、..和/开始的标识符 都被当作文件模块来处理
自定义模块是所有方式最慢的一种
1.模块路径的生成规则:
1.当前文件目录下的node——modules目录
2.父目录下的node_modules目录
3.父目录的父目录下的node_modules目录
4.沿路径向上逐级递归,直到根目录下的node_modules目录
当前文件的路径越深,模块查找耗时会越多,这是自定义模块的加载速度是最慢的原因
2.文件定位
1.文件扩展名
.js->.node->.json 依次补足扩展名,一次尝试