例子:我执行到了下图第二行:

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的原创文章,请关注公众号"汪子熙":




















