Require 内部逻辑(摘自官方文档)
当 Node 遇到
require(X)
时,按照下面的顺序处理。1)如果 X 是内置模块(比如
require('http')
)
- a.返回该模块
- b.不再继续执行
2)如果 X 以
./
或者../
开头
- a.根据 X 所在的父模块,确定 X 的绝对路径。
- b.将 X 当成文件,依次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。(也就是把 X 跟下面的几种文件格式进行匹配,匹配到了就会依照相应的文件格式进行加载)
+----------------------+ | .x | | .x.js | | .x.json | | .x.node | +-------------------- +
- c.将 X 当成目录,一次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。
+----------------------------+ | .X/package.json(main 字段) | | .X/index.js | | .X/index.json | | .X/index.node | +--------------------------- +
3)如果 X 不带路径
a.根据 X 所在的父模块,确定 X 可能的安装目录。 b.依次在每个目录中, 将 X 当成文件名或目录名加载
4)抛出 "not found"
本文作者:前端小毛
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!