前言这两天一直在学习nodejs。在b站看到一个up主分享的视频,挺好的,就关注了。实现第一步:定义myRequire方法functionmyRequire(filename){//获取绝对路径constmPath=Module._resolveFilename(filename);//缓存优先级constcacheModule=Module._cache[mPath];如果(缓存模块)返回缓存模块。出口;//创建一个空对象来加载目标模块constmodule=newModule(mPath);//缓存加载的模块Module._cache[mPath]=module;//执行加载module.load();returnmodule.exports;}Step2:定义Module类方法functionModule(id){//moduleid其实是一个绝对路径,只对当前目录做简单的查找和判断,实际上就是module一层层往上找,这里不再赘述。当没有找到时,它会尝试将文件后缀拼接到文件名中。这里只提供js和json方法。如果仍未找到,则会抛出错误。Module._resolveFilename=function(filename){//加入当前目录和文件名constmPath=path.join(__dirname,filename);//判断文件是否存在,returnif(fs.existsSync(mPath)){returnmPath;}//如果不存在,则尝试拼接后缀constsuffixs=Object.keys(Module._extensions);for(leti=0;i
