require 方法的加载规则

导读:本篇文章讲解 require 方法的加载规则,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

require 方法的加载规则

  1. 优先从缓存中加载
  2. 核心模块
  3. 路径形式的模块
  4. 第三方模块

一、核心模块

核心模块的本质也是文件,核心模块文件已经被编译到了二进制文件中了,我们只需要按照名字来加载就可以了

    例如

  • require(‘fs’)
  • require(‘http’)

二、第三方模块 

  1. 凡是用到第三方模块,都必须通过 npm 来下载
  2. 使用的时候就可以通过 require(‘包名’) 的方式来进行加载才可以使用
  3. 不可能有任何一个第三方包和核心模块的名字是一样的

   既不是核心模块、也不是路径形式的模块,加载方式如下

   以 var template = require(‘art-template’) 为例

  1. 先找到当前文件所处目录中的 node_modules 目录
  2. 然后根据以下方式找到文件中的 main 属性
  3. node_modules/art-template
    node_modules/art-template/package.json 文件
    node_modules/art-template/package.json 文件中的 main 属性
  4.    main 属性中就记录了 art-template 的入口模块
  5.    然后加载使用这个第三方包,但是实际上最终加载的还是文件
  6.    如果 package.json 文件不存在或者 main 指定的入口模块是也没有
  7.    则 node 会自动找该目录下的 index.js,也就是说 index.js 会作为一个默认备选项
  8.   如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
  9.   如果上一级还没有,则继续往上上一级查找
  10.  如果直到当前磁盘根目录还找不到,最后报错:   can not find module xxx

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66469.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!