nodejs require方法简单重写(这么长的代码也可以看一看的么么哒…….)

首先index.js module1.js module2.js在同一级目录,这个$require是为了简单实现node中require的功能,让index.js依赖module1.js,module1.js依赖module2.js,但是为什么index中写的$require在module1.js中也可以使用呢?

以下是主文件index.js内容 function $requireid { const fs = requirefs; const path = requirepath; const filename = path.join__dirname, id; const dirname = path.dirnamefilename; let code = fs.readFileSyncfilename, utf8; let module = { id: filename, exports: {} }; let exports = module.exports; code =`${code}`; evalcode; return module.exports; }
var m1 = $require./module1.js;
m1.a.say;
m1.b.say;

利用重写的$require去依赖module1.js

var module2 = $require./module2.js;
module.exports = { a:{ say:=>{ console.logmodule1 say; } }, b:module2
};

这里是module1.js依赖的module2.js

module.exports = { say: => { console.logmodule2 say; }
};

node的模块不都是独立的私有空间吗?通过这种方式在index.js简单重写的$require并没有暴露出去,为什么在它所依赖的module1.js中也可以使用,进而正常执行这两个方法呢m1.a.say; m1.b.say;

node初学,求前辈解惑,感激不尽.

发表评论

电子邮件地址不会被公开。 必填项已用*标注