common.js 伪代码
//缓存
let cache = {
"D:node\a.js":34,
};
function require(modulePath){
//获取模块绝对路径
let moduleId = getModuleId(modulePath);
if (cache[moduleId]) {
// 是否有缓存
return cache[moduleId];
}
// 该函数用于执行一个模块
function execModule(module, exports, __filename, __dirname, require ) {
// module 用于导出的对象
// exports 用户导出的对象
// 导入的模块所在目录的绝对路径
// 导入的模块的绝对路径
//这里是导入的模块的代码;
//do something
}
var module = {
exports: {c:5 }, // module.exports = {c:5} exports: {}
};
execModule.call(
module.exports,
module,
module.exports,
// 模块目录绝对路径,
// 模块绝对路径,
require,//requie 对象 所以能在模块中引用其他模块
);
cache[moduleId] = module.exports; // 缓存结果
return module.exports;
}