上面图片是bebugger一个导入的模块,使用vscode可以轻松的看到调用栈,通过断点调试进入断点
Mode函数的原型里面有一个require方法,函数里面有Module._load()加载模块,传入导入的路径地址和当前实例
里面的主要函数有Module._resolveFilename,该方法是解析路径的,把相对路径变成绝对路径的,尝试加载各种文件类型如JS或者JSON等等
Module._cache是模块的缓存对象,如果模块有缓存,则返回导出内容,如果不是则创建一个模块
创建模块,将模块写入缓存,尝试加载模块
根据文件的后缀加载各种类型的文件
读取文件,将文件内容编译出来,用闭包函数包裹