nodejs模块加载机制

nodejs模块加载机制

优先从缓存中加载

  • 当一个模块初次被 require 的时候,会执行模块中的代码,当第二次加载相同模块的时候,会优先从缓存中查找,看有没有这样的一个模块!
  • 好处:提高模块的加载速度;不需要每次都重新执行并加载模块!

核心模块的加载机制

  • 先查找缓存;如果缓存中没有,再去加载核心模块;

用户模块的加载机制

  • 先查找缓存;

  • 如果缓存中没有则尝试加载用户模块;

  • 如果在加载用户模块时候省略了后缀名,则:

    首先,严格按照指定的名称去查找
    其次,尝试加载后缀名是 .js 的文件
    如果没有.js的文件,则尝试加载 .json 结尾的文件
    如果没有 .json 的文件,则尝试加载 .node 结尾的文件
    查找规则:index  ->  index.js   ->   index.json   ->  index.node
    

第三方模块的加载机制【了解】

  1. 先在项目根目录中查找node_modules文件夹
  2. node_modules文件夹下,查找模块相关的文件夹
  3. 在对应的文件夹下,查找package.json的文件
  4. 查找package.json文件中的main属性(指定了模块的入口文件)
  5. 如果找到了main属性,同时,main属性指定的文件路径存在,那么尝试加载指定的文件模块
  6. 加入没有main属性,或者main属性对应的文件不存在,或者没有package.json,那么会依次尝试加载index.jsindex.json,index.node;
  7. 如果没有index相关的文件,或者没有指定模块对应文件夹,或者,当前项目根目录中没有node_modules文件夹,则向上一层目录中查找node_modules,查找规则同上!
  8. 最后,如果在项目所在磁盘的盘符根目录中,还找不到对应模块,则报错:cannot find module ***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值