node的require机制

  1. node加载本地模块 路径形式模块
    ./ 当前目录,不可省略
    ../ 上一级目录,不可省略
    文件后缀, .js 可以省略
    如: require('./foo') require('./foo.js')

  2. 加载核心模块的本质也是文件
    核心模块文件一级被编译到了二进制文件中,我们只需要按名字就可以了
    require('fs')
    require('http')

  3. 加载第三方模块

    • 凡是第三方模块都必须通过npm来下载

    • 使用的时候就可以通过require(‘包名’)的方式来进行加载才可以使用

    • 不可能有任何一个第三方包和核心模块的名字是一样的
      即不是核心模块,也不是路径形式的模块

    • 加载的顺序

      • 先找到当前文件所处目录中的node_modules目录

      • 找到文件下的包如 node_module/art-template

      • node_module/art-template/package.json文件

      • node_module/art-template/package.json文件的main属性

      • mian属性中就记录了art-template的入口模块

      • 然后就加载使用这个第三方包,实际上最终加载的还是文件

      • 如果package.json文件不存在或者main指定的入口模块是也没有则 node会自动找目录下的index.js
        也就是说 index.js会作为一个默认备选项

      • 如果以上所有,任何一个条件都不成立,则会进入上一级目录中的node_module目录查找

      • 如果上一级还没有,则继续往上一级 直到当前磁盘根目录还找不到,最后报错

   can  not   find  module  xxx
   
   如实际没有引入art-template
   var  template = require('art-template')

注意:

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

require方法加载 优先从缓存中加载

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值