Skip to content

Latest commit

 

History

History
38 lines (22 loc) · 1.05 KB

nodejs 模块加载.md

File metadata and controls

38 lines (22 loc) · 1.05 KB
require('http') //#1
require('./script') //#2
require('./script.js') //#3
require('./script.json') //#4
require('./script.node') //#5
require('script') //#6

以上几种不同的 require 方式

1. 先从缓存里寻找

2. 判断是不是个内置的全局模块 #1

3. 是不是路径开头 / ../ ./

3.1 如果带 .js .json .node 后缀,按路径加载 #345

3.2 如果不带 #2

  3.2.1 直接找到了无后缀的文件,加载
  
  3.2.2 如果没有,尝试加上 .js .json .node 加载, 变成 #345
  
  3.2.3 还是没有,猜测可能是个目录,尝试进入
  
    3.2.3.1 进这个目录 尝试获取 ./script/package.json 中的 main 字段
    
    3.2.3.2 尝试 ./script/index.js ./script/index.json ./script/index.node
    
4. 当前目录 node_modules 中找,寻找方式类似 3.2.3 的目录;找不到就往父目录的 node_modules 找

5. 算了,找不到了,抛异常

缓存的标记都是按模块绝对路径来计算的