node 的路径分析和文件查找策略

注意本篇文章的内容可以在《深入浅出 nodejs》这一本书中的 2.2 章节中找到详细介绍,这里只说结论

首先必须明确几点

  1. node 中使用的 commonjs 规范
  2. commonjs 规范使用 require 导入模块
    1. 模块就是文件,每一个文件都是一个模块

所以 node 中路径分析主要是针对 require 方法的,当然还有其他的比如说配置文件(package.json)中

查找顺序如下

  1. 优先从缓存加载
  2. 模块标识符分析
    1. 判断是否是原生(核心)模块(fs,http 等)
    2. 判断是否是路径形式的文件模块
      1. 如果是绝对路径,就从根目录找
      2. 如果是相对路径就从当前 require 文件相对位置查找
    3. 判断是否是自定义模块(也就是各种 npm 包)
      1. 在模块路径中依次查找
      2. 模块路径是各个层级 node_modules 组成的数组
  3. 文件扩展名分析
    1. 如果文件没有后缀,node 会按照 js,json,node 的次序补充扩展名,依次尝试
  4. 目录分析
    1. 目录作为模块,默认根据目录下 package.json 文件的 main 来指定目录模块
    2. 如果目录下没有 package.json 或着没有 main 属性,就会依此试图加载 .js、json、node 文件【文件扩展名分析】
相关推荐
FrontAI2 分钟前
Next.js从入门到实战保姆级教程:实战项目(上)——全栈博客系统架构与核心功能
开发语言·前端·javascript·react.js·系统架构
Sheldon一蓑烟雨任平生3 分钟前
边框按钮(纯CSS)
前端·css·动态按钮·css变量·边框按钮·按钮动画
freewlt6 分钟前
Rust在前端工具链的崛起:2026年生态全景
开发语言·前端·rust
I love studying!!!8 分钟前
Web应用程序:设置应用程序的样式并部署
前端
夕除13 分钟前
javaweb--08
前端·firefox
小李子呢021113 分钟前
前端八股Vue---生命周期函数
前端·javascript·vue.js
浪客川17 分钟前
【百例RUST - 007】结构体
java·前端·rust
美狐美颜sdk21 分钟前
视频平台如何实现实时美颜?Android/iOS直播APP美颜SDK接入指南
android·前端·人工智能·ios·音视频·第三方美颜sdk·视频美颜sdk
ZHENGZJM24 分钟前
前端流式通信 Hook:useBlogStream 详解
前端·全栈开发
人道领域25 分钟前
【黑马点评日记02】Redis解决Tomcat集群Session共享问题
java·前端·后端·架构·tomcat·firefox