Node.js源码中关于module.js 的问题
源码链接如下:https://github.com/nodejs/node-v0.x-archive/blob/master/lib/module.js
function Module(id, parent) {
this.id = id;
this.exports = {};
this.parent = parent;
if (parent && parent.children) {
parent.children.push(this);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
module.exports = Module; \n```
**如上代码所示,module.exports = Module, 但是这里貌似还没定义module, 为什么会这么写(位于源码52行)? 而下面代码Module._load()中又重新定义了module: var module = new Module(filename, parent); 第二个module在Module_load方法中定义,和之前一个module有什么区别?**
```js\n
Module._load = function(request, parent, isMain) {
// 计算绝对路径
var filename = Module._resolveFilename(request, parent);
// 第一步:如果有缓存,取出缓存
var cachedModule = Module._cache[filename];
if (cachedModule) {
return cachedModule.exports;
// 第二步:是否为内置模块
if (NativeModule.exists(filename)) {
return NativeModule.require(filename);
}
// 第三步:生成模块实例,存入缓存
var module = new Module(filename, parent);
Module._cache[filename] = module;
// 第四步:加载模块
try {
module.load(filename);
hadException = false;
} finally {
if (hadException) {
delete Module._cache[filename];
}
}
// 第五步:输出模块的exports属性
return module.exports;
}; \n```
这两个module有什么区别啊