bebugger调试理解commonJS原理

bebugger调试理解commonJS原理

上面图片是bebugger一个导入的模块,使用vscode可以轻松的看到调用栈,通过断点调试进入断点

bebugger调试理解commonJS原理

Mode函数的原型里面有一个require方法,函数里面有Module._load()加载模块,传入导入的路径地址和当前实例

bebugger调试理解commonJS原理

里面的主要函数有Module._resolveFilename,该方法是解析路径的,把相对路径变成绝对路径的,尝试加载各种文件类型如JS或者JSON等等
 
bebugger调试理解commonJS原理

Module._cache是模块的缓存对象,如果模块有缓存,则返回导出内容,如果不是则创建一个模块

bebugger调试理解commonJS原理

 创建模块,将模块写入缓存,尝试加载模块

 bebugger调试理解commonJS原理

bebugger调试理解commonJS原理

bebugger调试理解commonJS原理

根据文件的后缀加载各种类型的文件

bebugger调试理解commonJS原理

 

读取文件,将文件内容编译出来,用闭包函数包裹

bebugger调试理解commonJS原理

 bebugger调试理解commonJS原理