详解Node模块加载机制 Node.js 中,模块加载过程分为 5 步:
路径解析(Resolution):根据模块标识找出对应模块(入口)文件的绝对路径
加载(Loading):如果是 JSON 或 JS 文件,就把文件内容读入内存...执行(Evaluation):传入参数,执行包装得到的函数
缓存(Caching):函数执行完毕后,将module缓存起来,并把module.exports作为require()的返回值返回
其中,模块标识.../myModule.abcd)完全正确)
若不存在,依次尝试拼上.js、.json、.node(Node.js 支持的二进制扩展)后缀名
如果路径存在并且是个文件夹,就在该目录下找package.json...如果不是,就从当前目录开始,逐级向上在各个node_modules下找,一直找到顶层的/node_modules,以及一些全局目录:
NODE_PATH环境变量中指定的位置
默认的全局目录:HOME/....module.exports带出来,并将整个module对象缓存起来,最后返回require()结果
循环依赖
特殊的,模块之间可能会出现循环依赖,对此,Node.js 的处理策略非常简单:
// module1 2.9K41
|