(五)Node.js -模块的加载机制

这篇具有很好参考价值的文章主要介绍了(五)Node.js -模块的加载机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 优先从缓存中加载

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

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

2. 内置模块的加载机制

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

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

3. 自定义模块的加载机制

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

同时,在使用require()导入自定义模块时,如果省略了文件的扩展名,则Node.js会按顺序分别尝试加载以下的文件:
(1)按照确切的文件名进行加载
(2)补全.js扩展名进行加载
(3)补全.json扩展名进行加载
(4)补全.node扩展名进行加载
(5)加载失败,终端报错

4. 第三方模块的加载机制

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

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

例如,假设在C:\Users\xxx\project\foo.js文件里调用了require('tools'),则Node.js会按一下顺序查找:
(1)C:\Users\xxx\project\node_modules\tools
(2)C:\Users\xxx\node_modules\tools
(2)C:\Users\node_modules\tools
(2)C:\\node_modules\tools

5. 目录作为模块

当把目录作为模块标识符,传递给require()进行加载的时候,有三种加载方式:
(1)在被加载的目录下查找一个叫做package.json的文件,并寻找main属性,作为require()加载的入口
(2)如果目录里没有package.json文件,或者mian入口不存在或无法解析,则Node.js将会试图加载目录下的index.js文件
(3)如果以上两步都失败了,则Node.js会在终端打印错误信息,报告模块的缺失:Error: Cannot find module 'xxx'文章来源地址https://www.toymoban.com/news/detail-629374.html

到了这里,关于(五)Node.js -模块的加载机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.js--fs模块

    fs模块的全称为 file system ,称之为 文件系统 ,是Node.js中的 内置模块 ,可以对计算机中的磁盘进行操作。 文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果 方法 说明 writeFile 异步写入 writeFileSync 同步写入 appendFile/appendFileSync 追加写入 createWri

    2024年02月12日
    浏览(64)
  • 【Node.js】querystring 模块

    parse stringify escape/unescape 传入参数在 escape 包装下可以将参数中的有特殊字符进行转义,防止 sql 注入。

    2024年02月07日
    浏览(50)
  • Node.js -- fs模块

    fs – file system fs模块可以实现与硬盘的交互 例如文件的创建、删除、重命名、移动, 还有文件内容的写入、读取,以及文件夹的相关操作 导入fs 模块 写入文件 // 2 // 写入成功 其实,我们平常文件的保存也是使用了node 的fs 模块! 异步执行 上面我们在学习写入模块时举出的

    2024年04月25日
    浏览(43)
  • Node.js--模块化

    1.1 什么是模块化与模块 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 其中拆分出的 每个文件就是一个模块 ,模块的内部数据都是私有的,不过模块可以暴露内部数据以便其他模块使用 1.2 什么是模块化项目 编码时是按照模块一个一个编码

    2024年02月16日
    浏览(60)
  • Node.js模块的导出

    在Node.js中, module.exports 和 exports 是两种导出模块的方式,它们的作用是使得模块中的内容可以被其他模块引用和使用。 module.exports : module.exports 是一个指向当前模块所导出内容的对象的引用。你可以通过给 module.exports 赋值来导出一个对象、函数、类或者任何其他的JavaScrip

    2024年04月14日
    浏览(47)
  • (二)Node.js 基础模块

    1.1 什么是fs文件系统模块 fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。 例如: fs.readFile() 方法,用于读取指定文件中的内容 fs.writeFile() 方法,用于向指定的文件中写入内容 如果要在JavaScript代码中,使用

    2024年02月14日
    浏览(37)
  • Node.js模块化

    说明:将复杂的程序文件,拆分多个文件的过程。模块的内部数据是私有的,不过模块可以暴露内部数据供其他模块使用。 说明:编码时是按照模块一个一个编码的,整个项目就是一个模块化的项目。 3.模块化的优势 说明: 提高代码的复用性:模块化可以将代码分解为可重

    2024年02月12日
    浏览(64)
  • node.js的http模块

    http协议 :超文本传输协议(互联网应用最广泛的协议之一) http请求方法: get获取数据 post新增数据 put/patch更新数据 delete删除数据 head/options/connect/trace URL 统一资源定位符,其本身也是一个字符串。 在网络节点中,负责消费资源的电脑,叫做客户端。 负责对外提供网络资源

    2024年02月08日
    浏览(93)
  • Node.js中fs模块

    fs模块是Node.js中的一个核心模块,全称为File System(文件管理系统)。该模块专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入。 fs模块的API大都提供三种操作方式: 同步操作文件:代码会被阻塞,不会继续执行。 异步回调函数操作文件:代码不会被阻塞,

    2024年01月25日
    浏览(52)
  • 10-Node.js模块化

    目标 了解模块化概念和好处,以及 CommonJS 标准语法导出和导入 讲解 在 Node.js 中每个文件都被当做是一个独立的模块,模块内定义的变量和函数都是独立作用域的,因为 Node.js 在执行模块代码时,将使用如下所示的函数封装器对其进行封装 ​ 而且项目是由多个模块组成的,

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包