- module对象
1.1 Node内部提供一个Module构造函数,所有函数都是Module的实例。
function Moudle(id,parent) {
this.id = id;
this.exports = {};
this.parent = paremt;
//...
}
1.2 每个模块内部都有一个module对象,代表当前模块。
> module.id
模块的识别符,通常是带有绝对路径的模块文件名
> module.filename
模块的文件名,带有绝对路径。
> module.loaded
返回一个布尔值,表示模块是否已经完成加载
> module.parent
返回一个对象,表示调用该模块的模块
> module.children
返回一个数组,表示该模块要用到的其他模块。
> module.exports
表示模块对外输出的值
1.3 module.exports: 表示当前模块对外输出的接口,其他文件加载该模块,实际上就是读取module.exports变量。
1.4 exports: 每个模块还提供一个exports变量,指向module.exports。
这等于在每个模块头部,有一行隐藏的代码:
var exports = modele.exports;
可直接在exports方法上添加属性和方法,但是不可以直接赋值,同时调用exports和module.exports会被覆盖。