require 引用模块过程分析

第三方模块

  • 凡是第三方模块都必须通过 npm 来下载
  • 使用的时候就可以通过 require(‘包名’) 的方式来进行加载才可以使用
  • 不可能有任何一个第三方包和核心模块的名字是一样的
一、引用过程
  1. 先找到当前文件所处目录中的 node_modules 目录
  2. node_modules/模块名
  3. node_modules/模块名/package.json 文件
  4. node_modules/模块名/package.json 文件中的 main 属性
  5. main 属性中就记录了 模块 的入口模块
  6. 然后加载使用这个第三方包,实际上最终加载的还是文件

如果 package.json 文件不存在或者 main 指定的入口模块是也没有
则 node 会自动找该目录下的 index.js
也就是说 index.js 会作为一个默认备选项
如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
如果上一级还没有,则继续往上上一级查找
如果直到当前磁盘根目录还找不到,最后报错:
can not find module xxx var template = require(‘引用的模块’)

我们一个项目有且只有一个 node_modules,放在项目根目录中,这样的话项目中所有的子目录中的代码都可以加载到第三方包,不会出现有多个 node_modules

二、模块查找机制
  1. 优先从缓存加载
  2. 核心模块
  3. 路径形式的文件模块
  4. 第三方模块
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值