nodejs里require的调试截屏
例子:我执行到了下图第二行:
const TCPClient = require(’…/modules/tcpClient/index’)
那么我们就进入require的内部进行调试:
进入第11行:return mod.require(path);
path的值就是require传入的参数:
而mode的值:就是当前发起require请求的module对象:
转交给Module._load:
先从Module._cache里检查之前是否已经加载过这个模块了,如果缓存里有,直接从第479行返回了。
三大步骤:
- 新建一个Module对象
- 将新建的Module对象加入module缓存池里
- 执行tryModuleLoad加载module
nodejs框架试图从下列7个路径去加载module。
这个path和Java的classpath原理一样:
把该module的内容从文件系统读取出来,存储成字符串,然后compile:
require的返回结果,就是我们module实现文件里的exports输入,require结束。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":