广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Node 文件查找优先级及 Require 方法文件查找策略
  • 822
分享到

Node 文件查找优先级及 Require 方法文件查找策略

2024-04-02 19:04:59 822人浏览 独家记忆
摘要

目录一、模块规范二、查找策略原生模块绝对路径、相对路径目录作为模块非原生模块举个例子三、总结一、模块规范 nodejs对Commonjs进行了支持和实现,让我们在开发node的过程中

一、模块规范

nodejsCommonjs进行了支持和实现,让我们在开发node的过程中可以方便的进行模块化开发:

  • 在Node中每一个js文件都是一个单独的模块
  • 模块中包括CommonJS规范的核心变量:exports、module.exports、require
  • 通过上述变量进行模块化开发

而模块化的核心是导出与导入,在Node中通过exportsmodule.exports负责对模块中的内容进行导出,通过require函数导入其他模块(自定义模块、系统模块、第三方库模块)中的内容

二、查找策略

require方法接收一下几种参数的传递:

  • 原生模块:Http、fs、path等
  • 相对路径的文件模块:./mod或../mod
  • 绝对路径的文件模块:/pathtomodule/mod
  • 目录作为模块:./dirname
  • 非原生模块的文件模块:mod

require参数较为简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同,如下图:

从上图可以看见,文件模块存在缓存区,寻找模块路径的时候都会优先从缓存中加载已经存在的模块

原生模块

而像原生模块这些,通过require方法在解析文件名之后,优先检查模块是否在原生模块列表中,如果在则从原生模块中加载

绝对路径、相对路径

如果require绝对路径的文件,则直接查找对应的路径,速度最快

相对路径的模块则相对于当前调用require的文件去查找

如果按确切的文件名没有找到模块,则 NodeJs 会尝试带上 .js.JSON或 .node拓展名再加载

目录作为模块

默认情况是根据根目录中package.json文件的main来指定目录模块,如:

{ "name" : "some-library",
  "main" : "main.js" }

如果这是在./some-library node_modules目录中,则 require('./some-library') 会试图加载 ./some-library/main.js

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

非原生模块

在每个文件中都存在module.paths,表示模块的搜索路径,require就是根据其来寻找文件

window输出如下:

[ 'c:\nodejs\node_modules','c:\node_modules' ]

可以看出module path的生成规则为:从当前文件目录开始查找node_modules目录;然后依次进入父目录,查找父目录下的node_modules目录,依次迭代,直到根目录下的node_modules目录

当都找不到的时候,则会从系统NODE_PATH环境变量查找

举个例子

如果在/home/ry/projects/foo.js文件里调用了 require('bar.js'),则 node.js 会按以下顺序查找:

  • /home/ry/projects/node_modules/bar.js
  • /home/ry/node_modules/bar.js
  • /home/node_modules/bar.js
  • /node_modules/bar.js

这使得程序本地化它们的依赖,避免它们产生冲突

三、总结

通过上面模块的文件查找策略之后,总结下文件查找的优先级:

  • 缓存的模块优先级最高
  • 如果是内置模块,则直接返回,优先级仅次缓存的模块
  • 如果是绝对路径 / 开头,则从根目录找
  • 如果是相对路径 ./开头,则从当前require文件相对位置找
  • 如果文件没有携带后缀,先从js、json、node按顺序查找
  • 如果是目录,则根据 package.json的main属性值决定目录下入口文件,默认情况为 index.js
  • 如果文件为第三方模块,则会引入 node_modules 文件,如果不在当前仓库文件中,则自动从上级递归查找,直到根目录

到此这篇关于Node 文件查找优先级及 Require 方法文件查找策略的文章就介绍到这了,更多相关Node 文件查找内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Node 文件查找优先级及 Require 方法文件查找策略

本文链接: https://www.lsjlt.com/news/168363.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Node 文件查找优先级及 Require 方法文件查找策略
    目录一、模块规范二、查找策略原生模块绝对路径、相对路径目录作为模块非原生模块举个例子三、总结一、模块规范 NodeJS对CommonJS进行了支持和实现,让我们在开发node的过程中...
    99+
    2022-11-13
  • 查找mcafee升级包文件的方法
    查找mcafee升级包文件的方法:1、自动更新;2、手动更新;3、浏览McAfee官方网站。McAfee(麦克菲)是一家知名的计算机安全软件公司,提供各种防病毒、防火墙和数据保护等产品。为了保持计算机的安全性,用户需要定期升级McAfee软...
    99+
    2023-07-13
  • cad备份文件的查找方法
    小编给大家分享一下cad备份文件的查找方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cad备份文件的查找方法:首先查找CAD文件存储内是否有bak文件;然后找...
    99+
    2023-06-06
  • 在 Linux 中查找文件的方法
    使用简单的命令在 linux 下基于类型、内容等快速查找文件。 如果你是 Windows 或 OSX 的非资深用户,那么可能使用 GUI 来查找文件。你也可能发现界面受限,令人沮丧,或者两者兼而有之,并学会了组织文件并记...
    99+
    2022-06-04
    linux 中查找文件
  • Linux查找文件的方法是什么
    Linux查找文件的方法:1、使用find命令;2、使用locate命令;3、使用grep命令;使用whereis命令。在Linux操作系统中,我们经常需要查找特定的文件或目录。无论是用于定位丢失的文件,或者是用于查找特定类型的文...
    99+
    2023-07-31
  • python查找文件的方法是什么
    本篇内容主要讲解“python查找文件的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python查找文件的方法是什么”吧!标准库的fnmatch库专门用来进行文件名匹配,支持使用通配...
    99+
    2023-06-29
  • Linux--查找大文件的几种方法
    文章目录 前言一、ls命令二、find命令1.find介绍2.find查找 三、du命令总结 前言 在生产问题的排查与服务器日常运维过程中,大文件的查找、排序是不可避免的一个操作。因为Linux不像Windows操作那么可...
    99+
    2023-08-25
    linux 服务器 运维
  • springboot如何查找配置文件路径的顺序和其优先级别
    目录查找配置文件路径的顺序和其优先级别一、springboot查找配置文件路径的顺序和其优先级别二、同路径下springboot配置文件不生效的原因查找配置文件路径的顺序和其优先级别...
    99+
    2022-11-13
  • 查找linux系统中大文件的方法
    http://blog.csdn.net/bobo0915/article/details/51980650 可以用下面的命令查找到系统中哪一个文件夹有问题然后逐层查看就可以找到是哪一个文件了 ...
    99+
    2022-10-18
  • linux模糊查找一个文件的方法
    在当前目录下搜索指定文件: find . -name test.txt  在当前目录下模糊搜索文件: find . -name '*.txt'  在当前目录下搜索特定属性的文件: find ....
    99+
    2022-06-04
    linux模糊查找文件 linux模糊查找
  • Linux系统快速查找文件的方法
    本篇内容介绍了“Linux系统快速查找文件的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux常用命令中,有些命令可以帮助我们查找...
    99+
    2023-06-05
  • Java递归查找层级文件夹下特定内容的文件的方法
    目录递归查找文件引言根据特定内容寻找文件位置根据文件类型和文件名关键字查找相关文件Tips递归查找文件 引言 或许是文件太多,想找某个文件又忘记放哪了;又或者是项目改造,需要将外部调...
    99+
    2022-11-13
  • mysql查找配置文件my.ini位置的方法
    这篇文章主要讲解了“mysql查找配置文件my.ini位置的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql查找配置文件my.ini位置的方法”...
    99+
    2022-10-18
  • 利用LinuxFind命令快速查找文件方法
    目录一、find 命令基本使用方法二、find 命令进阶用法在茫茫的linux系统种我们如何快速的查找文件呢?对于系统文件基本上是有固定的位置的,但是有些软件安装文件是有自定义位置的...
    99+
    2022-12-08
    Linux Find命令查找文件位置 Linux Find命令查找文件 Linux Find命令用法 Find命令使用
  • 利用Linux Find命令快速查找文件方法
    目录一、find 命令基本使用方法二、find 命令进阶用法在茫茫的linux系统种我们如何快速的查找文件呢?对于系统文件基本上是有固定的位置的,但是有些软件安装文件是有自定义位置的,不熟悉的运维人员交接后我们需要重新适...
    99+
    2022-12-08
    LinuxFind命令查找文件位置 LinuxFind命令查找文件 LinuxFind命令用法 Find命令使用
  • Linux查找处理文件名后包含空格的文件(两种方法)
    当Linux下文件名中出现空格这类特殊情况话,如何查找或确认那些文件名后有空格呢? 又怎么批量替换处理掉这些空格呢? 方法1: 输入文件名后使用Tab键,如果使用Tab键后面出现 这样的可见字符,那么...
    99+
    2022-06-04
    两种 空格 文件名
  • 阿里云服务器实例文件的查找方法
    本文主要介绍如何在阿里云服务器上查找实例文件。阿里云服务器是阿里云推出的一种弹性计算服务,具有高可用性、高性能、低成本的特点。对于使用阿里云服务器的用户来说,理解如何查找实例文件是非常重要的。本文将详细介绍查找实例文件的步骤和方法。 一、打...
    99+
    2023-11-09
    阿里 实例 服务器
  • linux查找大文件指定内容的实现方法
    以大划小思想,然后重定向。 linux有时候会遇到文件很大,关键字查找都要超过整屏,无法查看到所有内容。比如一个非常大的日志文件info.log,我们要查看某段字符所有日志,可以同 cat info.log | grep...
    99+
    2022-06-04
    linux 查找 大文件 内容
  • linux 查找大目录和大文件的方法(推荐)
    今天,在机器上执行命令的时候,发现tab键无法补全了,原因竟然是磁盘空间满了,使用df命令看了一下,确实如此,每个分区的使用率都得到100%了,因此想找到系统中的大目录和大文件,删除一部分。 主要涉及到两个...
    99+
    2022-06-04
    大文件 目录 方法
  • linuxfind命令将查找到的文件批量删除方法
    目录linux find命令将查找到的文件批量删除Linux中find三种删除方式,常用于crontab定时任务和shell脚本0、按文件类型查找1、按文件名查找2、按文件时间属性查...
    99+
    2022-12-08
    linux find删除文件 linux find命令用法 linux find命令
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作