nodejs里require的调试截屏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/i042416/article/details/88182684

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

clipboard1

const TCPClient = require(’…/modules/tcpClient/index’)

那么我们就进入require的内部进行调试:
进入第11行:return mod.require(path);
clipboard2

path的值就是require传入的参数:
clipboard3

而mode的值:就是当前发起require请求的module对象:
clipboard4

转交给Module._load:
clipboard5

先从Module._cache里检查之前是否已经加载过这个模块了,如果缓存里有,直接从第479行返回了。
clipboard6

三大步骤:
clipboard7

  1. 新建一个Module对象
  2. 将新建的Module对象加入module缓存池里
  3. 执行tryModuleLoad加载module
    clipboard8

nodejs框架试图从下列7个路径去加载module。

这个path和Java的classpath原理一样:
clipboard9

把该module的内容从文件系统读取出来,存储成字符串,然后compile:
clipboard10

require的返回结果,就是我们module实现文件里的exports输入,require结束。
clipboard11

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

猜你喜欢

转载自blog.csdn.net/i042416/article/details/88182684