node——13-require 加载规则

在这里插入图片描述在这里插入图片描述
为了避免重复加载,提高模块加载效率,会优先从缓存加载,由于在 a 中已经加载 b 了,所以此时 require('./b'); 并不会重复执行里面的代码,仅可以拿到里面的接口对象,如下
在这里插入图片描述
在这里插入图片描述

require(’模块标识符’);

模块标识符:

  • 核心模块(模块名)
    • 核心模块的本质是文件,只是已经被编译到了 node 二进制文件中
    • 例如:require('fs'); require('http'); 等
  • 第三方模块(模块名)
    • 凡是第三方模块都必须通过 npm 来下载
    • 使用的时候就可以通过 require('包名') 的方式进行加载才可以使用
    • 不可能有任何一个第三方包和核心模块的名字是一样的
    • 加载步骤:
      1. 先找到当前文件所处目录中的 node_modules 目录
      2. 再找到 node_modules/art-template/package.json 文件中的 main 属性
      3. main 属性中就记录了 art-template 的入口模块
      4. 然后加载使用这个第三方包(实际也是文件)
      5. 如果 package.json 文件不存在或 main 指定的入口模块没有,则 node 会自动找该目录下的 index.js ,即 index.js 会作为一个默认备选项
      6. 如果以上条件不成立,则会进入上级目录寻找 node_modules 目录,以此循环,直到找不到报错 can not find module xxx
      7. 注意:第 6 条仅供参考,实际项目有且仅有一个 node_modules 目录(放在项目根目录下)
  • 自己的模块(路径)
    • ./ (当前目录,不可省略,但文件操作中 ./ 可以省略,如:fs.readFile('file/a.js',function(){})
    • ../ (上一级目录,不可省略)
    • /xxx (首位的 / 表示当前文件模块所属磁盘的根路径,如c盘下的文件,/ 等于 c:/,此路径几乎不用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值