1. Node中的模块分为两类。一个是node提供的模块,称为核心模块,如http, fs, path;另一类是用户编写的模块,称为文件模块。
2. require()方法接收一个标识符进行模块查找。
可分为
- 核心模块,如require('path');
- . 或 .. 开头的相对路径文件模块
- 以 / 开头的绝对路径文件模块
- 非路径形式的文件模块,如自定义的connect模块
// 引入文件模块 let _path = require('./path'); // 引入核心模块 const path = require('path'); console.log(path.extname('index.html')); _path.say();
3. 查找自定义模块是最慢,这里涉及到模块路径的查找规则,比如require('c'); 如果不是核心模块,首先会在当前文件目录的node_modules目录中查看,如果没有则在父目录的node_modules目录中查找,直至到根目录的node_modules。 使用console.log(module.paths)
4. 如果加载.node或.json文件,在传递给require()时带上这些扩展名会加快加载速度。
5. 如果require('d '); 在node_modules中不存在d.js文件,只存在名为d的这个目录,会先解析d目录中的package.json(包描述文件),取出main属性进行定位。如果没有package.json文件。则依次查找index.js, index.node, index.json。