require()里面的参数有两种写法,一种带路径一种不带路径。就像下面这样:
require('./module'); // 带相对路径
require('/module'); // 带绝对路径
require('module'); // 不带路径
这种不带路径的 require('module') 引入方式,可能是内置模块,也可能是第三方模块,内置模块优先查找,没有的话就是第三方模块了,它会先从当前目录的 node_modules 里面查找,没有的话就到父目录下的 node_modules 里面去找,如此向上追溯,直到根目录下的 node_modules 目录,要是还没有的话就会到全局里面去找,大概是这么一个搜索过程。
另外一种带路径的方式,就会沿着路径去找,如果没有找到则会尝试将当前目录作一个包来加载。此外,使用绝对路径的速度查找最快,当然了,node 也对路径查找做了缓存机制。