热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件查找_每日灵魂一问Nodejs文件查找的优先级&Require方法的文件查找策略?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了每日灵魂一问-Nodejs文件查找的优先级&Require方法的文件查找策略?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了每日灵魂一问-Nodejs文件查找的优先级&Require 方法的文件查找策略?相关的知识,希望对你有一定的参考价值。



模块规范

在Node中每一个js文件都是一个单独的模块

模块中包括CommonJS规范的核心变量:
导出:exports、module.exports
导入:require

通过上述变量进行模块化开发

查找顺序(优先级):

1.1 文件模块: 从文件模块缓存区中查找,有则返回
1.2 原生模块: 原生模块(fs , http)缓存=》原生模块=》
1.3 文件加载: 相对路径=》绝对路径=》非原生模块

  • 如果是相对路径 ./开头,则从当前require文件相对位置找
  • 如果是绝对路径 / 开头,则从根目录找
  • 如果文件没有携带后缀,先从js、json、node按顺序查找
  • 如果是目录,则根据 package.json的main属性值决定目录下入口文件,默认情况为 index.js
  • 如果文件为第三方模块,则会引入 node_modules 文件向上级递归查找

查找策略

1.原生模块:http、fs、path等 require后优先检查模块是否在原生模块列表中
2.相对路径的文件模块:./mod或../mod
如果按确切的文件名没有找到模块,则 NodeJs 会尝试带上 .js、.json或 .node拓展名再加载
3.绝对路径的文件模块:/pathtomodule/mod 速度最快
4.目录作为模块:./dirname 会.js .json /main/index.js /main/index.node
5.非原生模块的文件模块:mod
查找顺序当前文件夹的node_modules下找 上层目录下的node_modules下找 上上层目录下的node_modules下找 上上上层目录下的node_modules下找 .......


推荐阅读
  • 本文详细探讨了HTML表单中GET和POST请求的区别,包括它们的工作原理、数据传输方式、安全性及适用场景。同时,通过实例展示了如何在Servlet中处理这两种请求。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
  • 深入解析JavaScript中的require与import差异
    本文深入探讨了JavaScript中require与import的主要区别,并通过实际案例详细说明了它们的工作原理及应用场景,对于开发者理解和使用这两种模块加载方式具有重要指导意义。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文探讨了 Linux 系统中的 Shell 架构及其如何处理环境变量,同时详细介绍了 Source 命令的作用和应用场景。 ... [详细]
  • 了解如何快速搭建属于自己的个人博客,无需编程基础,适合Mac和Windows用户。通过本文,您将学会使用GitHub Pages和Hexo构建一个完全自主的在线空间。 ... [详细]
  • 腾讯视频 Node.js 服务国庆阅兵直播高并发实战
    本文分享了腾讯视频团队在国庆阅兵直播项目中,如何利用Node.js服务成功应对2.38亿次观看的高并发挑战。文章将从服务架构、可用性保障、缓存策略、日志与告警等方面详细解析。 ... [详细]
  • 本文详细介绍了如何在Linux系统中安装和配置Node.js,包括从官方下载、编译安装到运行基本示例的全过程。 ... [详细]
  • C++网络编程:连接成功后的回调机制及前端视角下的异步编程解析
    本文探讨了C++网络编程中连接成功后的回调机制,并从一个前端开发者的角度深入浅出地介绍了异步编程的基本概念及其重要性,特别强调了JavaScript中异步编程的各种实现方式。 ... [详细]
author-avatar
枫的Lilyxj
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有