企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
参考:[require() 源码解读](http://www.ruanyifeng.com/blog/2015/05/require.html) 2009年,Node.js 项目诞生,所有模块一律为 CommonJS 格式。 时至今日,Node.js 的模块仓库 npmjs.com ,已经存放了15万个模块,其中绝大部分都是 CommonJS 格式。 这种格式的核心就是 require 语句,模块通过它加载。学习 Node.js ,必学如何使用 require 语句。本文通过源码分析,详细介绍 require 语句的内部运行机制,帮你理解 Node.js 的模块机制。 分析源码之前,先介绍 require 语句的内部逻辑。如果你只想了解 require 的用法,只看这一段就够了。 下面的内容翻译自《Node使用手册》。 当 Node 遇到 require(X) 时,按下面的顺序处理。 (1)如果 X 是内置模块(比如 require('http'))   a. 返回该模块。   b. 不再继续执行。 (2)如果 X 以 "./" 或者 "/" 或者 "../" 开头   a. 根据 X 所在的父模块,确定 X 的绝对路径。   b. 将 X 当成文件,依次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。 X X.js X.json X.node   c. 将 X 当成目录,依次查找下面文件,只要其中有一个存在,就返回该文件,不再继续执行。 X/package.json(main字段) X/index.js X/index.json X/index.node (3)如果 X 不带路径   a. 根据 X 所在的父模块,确定 X 可能的安装目录。   b. 依次在每个目录中,将 X 当成文件名或目录名加载。 (4) 抛出 "not found" 参考:[NodeJs:“require” 函数详解,懂这个你就懂NodeJs了](http://www.cnblogs.com/happyframework/articles/3064517.aspx)