模块的加载机制

news2024/11/16 14:04:34

4.1优先从缓存中加载

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

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

4.2内置模块的加载机制

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

例如,require(‘’fs")始终返回内置的fs模块,即使在node_modules目录下有名字相同的包也叫作fs.

4.3自定义模块的加载机制

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

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

①按照确切的文件名进行加载

②补全.js扩展名进行加载

③补全.json扩展名进行加载

④补全.node扩展名进行加载

⑤加载失败,终端报错

4.4第三方模块的加载机制

如果传递给require()的模块标识符不是一个内置模块,也没有以“./”或“../”,则Node.js会从当前模块的父目录开始,尝试从/node_modules文件夹中加载第三方模块。

如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。

 4.5目录作为模块

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

①在被加载的目录下查找一个叫做package.json的文件,并寻找main属性,作为require()加载的入口

②如果目录里没有package.json文件,或者main入口不存在或无法解析,则Node.js将会试图加载目录下的Index.js文件

③如果以上两步都失败了,则Node.js会在终端打印错误消息,报告模块的缺失:Error:Cannot find module 'xxx'

(json中不能使用‘ 单引号’)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【服务器】本地搭建PHP简单Imagewheel私人图床系统

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

Install Harbor 2.8 on Centos

目录 Node & System/Software Lists Architecture Overview of Harbor Install Harbor 2.8 Harbor Installation Prerequisites Install Docker and Docker Compose Install Harbor Pull and Push image from Harbor Reference documentation Node & System/S…

每日一道面试题之java 中 IO 流分为几种?

IO流是什么? 流是数据在数据源(文件)和程序(内存)之间经历的路径。 这样解释似乎是很抽象不易理解的,因此我们拿生活中的例子来说,我们可以把流看成流动的自来水,打开水阀,自来水就会通过水管从水源流到各个用户家中…

华为OD机试真题 Java 实现【求最小公倍数】【牛客练习题】

一、题目描述 正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。 数据范围:1≤a,b≤100000 。 二、输入描述 输入两个正整数A和B。 三、输出描述 输出A和B的最小公倍数。 四、解…

卓望数码前端一面

卓望数码前端一面 原文网址:https://www.nowcoder.com/discuss/409361218459234304?sourceSSRsearch 1.css中flex布局有哪些常见的属性 display:flex 首先让一个容器为flex布局应该写 display:flex flex-direction flex有两个关键的轴,分别是主轴…

chatgpt赋能python:Python列表倒序排序

Python列表倒序排序 Python是一种高级编程语言,被广泛用于各种领域的应用程序开发中,包括数据科学和机器学习。Python语言自带许多强大的编程工具,其中列表是其中最基础的数据结构之一。它可以让程序员整理和管理大量的数据,在实…

7.Nginx优化

文章目录 Nginx优化Nginx隐藏版本号修改Nginx的用户和组用户配置Nginx网页缓存时间日志分割配置Nginx连接超时、连接保持修改Nginx的进程数配置Nginx网页压缩设置防盗链 Nginx优化 Nginx隐藏版本号 隐藏Nginx版本号,避免安全漏洞泄漏Nginx隐藏版本号的方法 修改配…

天气预报信息获取程序--可以使用

一、优化了,输入城市代码,获取城市信息 # codingutf-8 import requests import re import csv import datetimeclass WeatherForecast(object):def __init__(self,city_code,start_year,end_year,end_month):self.city_codecity_codeself.start_yearsta…

Linux安装rinetd实现端口转发

在Linux系统中大多数情况选择用iptables来实现端口转发,iptables虽然强大,但配置不便,而且新手容易出错。在此分享另一个TCP/UDP端口转发工具rinetd,rinetd体积小巧,配置也很简单。 这篇文章以CentOS 7为例&#xff0…

职场的尽头,是编制?

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 本来以为“上岸”是年轻人的专利,没想到这两天却从一位42岁的朋友那里,听到了他老人家上岸的消息。这位朋友曾在阿里任职多年,从去年下半年就开始和一所大学接洽&am…

Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法

一、技术指标 •图像文件格式:DCM、JPG、BMP、TIF等 •可支持显示属性设置:24/32位真彩;256位色(黑白) •可支持监视器分辨率:1024﹡768;1280﹡1024;1600&…

chatgpt赋能python:Python删除非数字字符

Python删除非数字字符 Python是一种流行的编程语言,主要用于数据科学、人工智能、Web开发和自动化等领域。在数据处理和清洗中,Python非常强大且易于使用,而Python删除非数字字符是一个非常常见的操作。在本文中,我们将介绍如何用…

parser.add_argument详解

接上一篇:写一个python文件,在shell脚本中运行 1.来了解下 parser.add_argument函数的参数 可以看下下面的一个参数例子 def get_args():parser argparse.ArgumentParser()parser.add_argument(-b, --batch_size, typeint, default64)parser.add_argu…

java-函数式接口和Stream流

java-函数式接口和Stream流 一、函数式接口 1.1函数式接口概述 概念 有且仅有一个抽象方法的接口 如何检测一个接口是不是函数式接口 FunctionalInterface 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败…

K8S系列文章之基础理论篇

第一部分:理解控制器 简介:当我们尝试去理解 Kubernetes 集群工作原理的时候,控制器肯定是一个难点。这是因为 控制器有很多,具体实现大相径庭;且控制器的实现用到了一些较为晦涩的机制,不易理解。但 是&a…

2023轻松斩获5家大厂offer后的面试总结!

2023年能这么轻松地斩获5家大厂offer,其实这些功劳都要归功于阿里团队的这份软件测试核心知识文档,小编今天在此分享出来,也希望能帮助更多的小伙伴拿到更多高薪的offer; 内容涉及:测试理论、Linux基础、MySQL基础、W…

【小张和Oracle数据库】Java两年半练习生裁员后竟然找到了一份DBA的工作?

一、引言 大家好,我叫张小念(小名念念),家里人都叫宝儿。 一个java两年半的练习生,经历了起起伏伏的疫情时代,终于在java一行也算是入了门。 但是,计划永远赶不上变化, 有一天经…

Makerbase SimpleFOC ESP32 例程3 I²C双编码器测试(AS5600)

Makerbase SimpleFOC ESP32 例程3 IC双编码器测试(AS5600) 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线156pin杜邦线2 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360连续运…

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试

Makerbase SimpleFOC ESP32 例程2 双电机开环位置测试 第一部分 硬件介绍 1.1 硬件清单 序号品名数量1ESP32 FOC V1.0 主板12YT2804电机2312V电源适配器14USB 线1 注意:YT2804是改装的云台无刷电机,带有AS5600编码器,可实现360连续运转。 主要参数如…

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测

区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测 目录 区间预测 | MATLAB实现基于QRCNN-GRU-Multihead-Attention多头注意力卷积门控循环单元多变量时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一…