【Node.js】模块的加载机制
创始人
2024-04-02 06:36:13
0

 

✍️ 作者简介: 前端新手学习中。
💂 作者主页: 作者主页查看更多前端教学
🎓 专栏分享:css重难点教学       Node.js教学 从头开始学习

目录

模块的加载机制

        优先从缓存中加载

         内置模块的加载机制

        自定义模块的加载机制

         第三方模块的加载机制

        目录作为模块加载


模块的加载机制

        优先从缓存中加载

模块在第一次加载后会被缓存,这也意味着多次调用require()不会导致模块的代码被执行多次。

注意:不论是内置模块,用户自定义模块,还是第三方模块,他们都会优先从缓存中加载,从而提高模块的加载效率。

定义一个模块,里面写好打印内容

console.log('打印并显示内容');

 然后再另一个js文件中导入三次,看一看 会执行几次里面的内容。

require('./02模块');
require('./02模块');
require('./02模块');

可以看到,他只打印了一次,只执行了一次内容。

         内置模块的加载机制

内置模块是由Node.js官方提供的模块,内置模块的加载优先级最高。

意思是说  如果自定义模块,与内置模块同名,则优先会加载内置模块。

        自定义模块的加载机制

使用require()加载自定义模块,必须指定以./或../开头的路径标识符,在加载自定义模块时,如果没有./或者../这样的路径标识符,则node会把它当做内置模块或第三方模块进行处理。

同时,在使用require()导入自定义模块时,如果省略了文件的扩展名,则Node 执行文件时会按顺序分别尝试加载以下的文件类领。

  1. 按照准确标记的扩展名
  2. 补全js扩展名进行加载
  3. 补全json扩展名进行加载
  4. 补全node扩展名进行加载
  5. 加载失败,终端报错 

         第三方模块的加载机制

如果传递给require()的模块标识符不是一个内置模块,也没有以./或../开头,则Node.js会从当前父级模块开始查找子级node_modules文件夹,然后从里面查找导入的模块名称。

例如  在C:\Users\itheima\project\foo.js 文件里调用了require(‘tools’),则Node.js会按一下顺序查找。

  1.  C:\Users\itheima\project\node_modules\tools
  2. C:\Users\itheima\node_modules\tools
  3. C:\Users\node_modules\tools
  4. C:\node_modules\tools

        目录作为模块加载

 当把目录作为模块标识符,传递给require()进行加载的时候,有三种加载方式:

  1. 在被加载的目录下查找一个叫做package.json的文件,并寻找main属性,作为require()加载的入口
  2. 如果没有package.json文件,或者main属性不存在,文件不存在的话,则会加载目录下的index.js文件
  3. 如果以上两部都失败了,则会报错 模块缺失

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...