您现在的位置是:首页 > 正文

Node.js模块加载机制

2024-02-01 06:39:41阅读 2

  • 加载模块优先从缓存中。

1. 内置模块加载机制

  • 加载优先级最高

2. 自定义模块加载机制

I. 使用require()加载自定义模块是,必须以./或者…/开头的路径标识符。在加载自定义模块时,如果没有指定./或者…/这样的路径标识符,则node会把它当作内置模块或者第三方模块进行加载。
II. 使用require()倒入模块时,如果省略了文件的扩展名,则Node.js会按顺序分别尝试加载以下文件:
a. 按照确切文件名进行加载。
b. 补全.js扩展名进行加载。
c. 补全.json扩展名进行加载。
d. 补全.node扩展名进行加载。
e. 加载失败,终端报错。

3. 第三方模块加载机制

I. 如果传递给require()的模块标识符不是一个内置模块,也没有以‘./’或者’…/'开头,则Node.js会从当前模块的父目录开始,尝试从/node_moduled文件夹加载第三方模块。
注:如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。

4. 目录作为模块

I. 当目录作为模块标识符,传递给require()进行加载时,有以下加载顺序:
a. 在被加载的目录下查找package.json文件,并寻找main属性,作为require()加载的入口。
b. 如果目录中没有package.json文件,或者main入口不存在或无法解析,则Node.js将会试图加载目录下的index.js文件。
c. 如果以上两步都失败了,则Node.js会在终端打印错误信息,报告模块的缺失。

网站文章

  • 从源码分析:Java中的SPI是怎样工作的

    spi介绍提到api,大家或多或少地都接触或者使用过,但是如果说到spi呢,可能了解的人就要少一些。Java SPI的全...

    2024-02-01 06:39:33
  • 家用 文件服务器,家用文件服务器

    家用 文件服务器,家用文件服务器

    家用文件服务器 内容精选换一换远程桌面协议(Remote Desktop Protocol,RDP),是微软提供的多通道的远程登录协议。本节为您介绍如何使用RDP文件远程登录Windows弹性云服务器...

    2024-02-01 06:39:25
  • SpringCloud-向Eureka注册中心注册微服务(微服务的搭建)

    SpringCloud-向Eureka注册中心注册微服务(微服务的搭建)

    Eureka注册中心注册微服务 注明:此项目为本人学习尚硅谷老师的教学视频然后整理核心的配置文件,所有的项目均在以下地址下载。https://github.com/xwbGithub/microservicecloud下载, 本章讲解请参考microservicecloud-provider-dept-8001,首先微服务的服务中心...

    2024-02-01 06:38:54
  • spring实现aop的步骤

    spring实现aop的步骤

    首先注意导入一个jar包! 在applicationContext.xml中配置扫包 :开启aop的自动代理 切面类 @Component//spri

    2024-02-01 06:38:47
  • 爬虫技术原来可以做这么多牛逼哄哄的事情!

    爬虫技术原来可以做这么多牛逼哄哄的事情!

    对于很多对于不懂编程语言的GGMM来说,爬虫技术高深莫测。但是对于IT工程师来说,爬虫技术可以说信手拈来。虽然熟知爬虫技术,你是否知道它竟然可以做这么多这么牛逼哄哄的事情! 1.利用爬虫技术抓取公司用户信息 公司有15k员工,办公系统的hr模块,只要有部门级的管理人员权限就可以看自己部门的几百名员工资料,包括历年历月的工资条和具体个人信息。关键是,网页地址上有员工编号,如果改一下编号...

    2024-02-01 06:38:41
  • 构建工具webpack与babel使用

    构建工具webpack与babel使用

    Babel入门 一、Bable是什么 Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。下...

    2024-02-01 06:38:34
  • ASP页面基础知识

    1, 是什么意思呢?是加入样式文件,     href="style.css"   是加入sytle.css样式文件 。rel指定链接link的类型,style指定目标文件href的类型 2,

    2024-02-01 06:37:58
  • Matlab:多输入多输出非线性对象的模型预测控制(MPC, Model Predictive Control)的实现

    Matlab:多输入多输出非线性对象的模型预测控制(MPC, Model Predictive Control)的实现

    [TOC](Matlab:多输入多输出非线性对象的模型预测控制(MPC, Model Predictive Control)的实现)✨ 本文展示了如何在Simulink中设计多输入多输出对象的闭环模型预测控制 (MPC, Model Predictive Control),分析对象具有三个操纵变量(Manipulated Variables)与两个测量输出(Measured Output)。

    2024-02-01 06:37:52
  • cuda 排序算法笔记

    Thrust是cuda自带的c++库,cuda安装好之后,这个库也默认安装好了。 这个库基本是采用类似STL的接口方式,因此对于开发者非常友好,开发者不再需要关注内存与显存相关的问题了。 排序入门例子 #include #include #include #include #incl..

    2024-02-01 06:37:19
  • OkHttp完全解析

    OkHttp完全解析

    网上关于OkHttp的使用教程已经有很多了,先来贴一片网上的使用教程: http://blog.csdn.net/chenzujie/article/details/46994073然后直接进入正题。 看完上面这篇文章,主要理解的几个点:外部通过构造Request,初始化OkHttpClient,并由两者共同构造出Call。访问网络通过Call,Call支持两种模式:同步和异步。同步使用exe

    2024-02-01 06:37:13