news 2026/6/9 22:12:59

NodeJS模块加载机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NodeJS模块加载机制

官方文档:https://www.nodeapp.cn/modules.html#modules_modules

1、在 Node.js 模块系统中,每个文件都被视为独立的模块。
2、当 Node.js 直接运行一个文件时,require.main 会被设为它的 module。 这意味着可以通过 require.main === module 来判断一个文件是否被直接运行。

1 require函数

用来加载目标js库,并返回目标js库公开的属性成员函数/变量。

伪代码

functionrequire(/* ... */){constmodule={exports:{}};((module,exports)=>{// 模块代码在这。在这个例子中,定义了一个函数。functionsomeFunc(){}exports=someFunc;// 此时,exports 不再是一个 module.exports 的快捷方式,// 且这个模块依然导出一个空的默认对象。module.exports=someFunc;// 此时,该模块导出 someFunc,而不是默认对象。})(module,module.exports);returnmodule.exports;}

加载顺序

1、内置模块(fs、http…)
优先级最高,直接返回 native 绑定,即使本地装了同名包也会被忽略 。
2、相对路径文件模块(./foo、…/lib/bar)
会把文件当成一个“包”,按 .js → .json → .node 顺序补全扩展名 。
3、目录模块(require(‘./dir’))
先看 dir/package.json 的 main 字段 → 没有就退回到 dir/index.js 。
4、第三方包(require(‘lodash’))
触发“node_modules 向上漂移”算法:
当前文件父级 → 再父级 → … → 根目录,直到找到第一个 node_modules/lodash 。

2 module对象


在每个模块中,module 的自由变量是一个指向表示当前模块的对象的引用。 为了方便,module.exports 也可以通过全局模块的 exports 对象访问。 module 实际上不是全局的,而是每个模块本地的。

参考文档

浅析nodejs的require函数分别加载自定义模块和npm开源库的不同加载原理、NodeJS模块加载机制require和module的理解

Node.js的模块解析机制

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 9:29:06

小白必看:Anything to RealCharacters 2.5D转真人5分钟快速上手指南

小白必看:Anything to RealCharacters 2.5D转真人5分钟快速上手指南 你是不是也遇到过这些情况? 画了一张精致的二次元角色立绘,想发朋友圈却总觉得“不够真实”; 设计了一个2.5D风格的IP形象,客户却说“希望更贴近真…

作者头像 李华
网站建设 2026/6/10 9:29:02

InstructPix2Pix参数详解:Image Guidance=0.8时细节保留与创意发挥平衡

InstructPix2Pix参数详解:Image Guidance0.8时细节保留与创意发挥平衡 1. AI魔法修图师——不是滤镜,是听得懂人话的即时编辑伙伴 你有没有过这样的时刻:想把一张旅行照里的阴天改成阳光明媚,却卡在PS图层蒙版里反复调试&#x…

作者头像 李华
网站建设 2026/6/10 9:29:08

告别网络依赖!这款离线阅读解决方案如何让你的阅读体验提升300%

告别网络依赖!这款离线阅读解决方案如何让你的阅读体验提升300% 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 你是否也曾经历过这样的时刻:地铁里信号…

作者头像 李华
网站建设 2026/6/10 9:28:35

如何突破数字音频加密壁垒:音频解密与格式转换全攻略

如何突破数字音频加密壁垒:音频解密与格式转换全攻略 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 在数字音乐蓬勃发展的今天,我们常常会遇到下载的音频文件被特殊格式加密的困扰,导致无法在多设…

作者头像 李华
网站建设 2026/6/10 11:11:39

亲测有效的开机启动脚本,适合所有Linux新手用户

亲测有效的开机启动脚本,适合所有Linux新手用户 你是不是也遇到过这样的问题:写好了一个监控脚本、一个数据采集程序,或者一个自动备份工具,每次重启系统后都要手动运行一次?反复操作既麻烦又容易忘记,时间…

作者头像 李华
网站建设 2026/6/10 12:24:04

音频加密格式解析实战指南:从原理到跨平台解密避坑技巧

音频加密格式解析实战指南:从原理到跨平台解密避坑技巧 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题发现:当我们遇到加密音频文件 作为一名技术探秘者,我曾在一次音乐收藏整理中遇到了一个…

作者头像 李华