Node中exports和module.exports的区别

module.exports属性

Node内部提供一个Module构建函数。所有模块都是Module的实例。每个模块内部,都有一个module对象,代表当前模块。它有以下属性。

module.id 模块的识别符,通常是带有绝对路径的模块文件名。
module.filename 模块的文件名,带有绝对路径。
module.loaded 返回一个布尔值,表示模块是否已经完成加载。
module.parent 返回一个对象,表示调用该模块的模块。
module.children 返回一个数组,表示该模块要用到的其他模块。
module.exports 表示模块对外输出的值。

使用require加载某个模块,其实是加载该模块的module.exports属性。

exports变量

为了方便,Node为每个模块提供一个exports变量,指向module.exports。

关系

(1) exprots和module.exports的关系在于指向同一个对象,在对外输出模块接口时,可以向exports对象添加方法

exports.area = function (r) {
  return Math.PI * r * r;
};

exports.circumference = function (r) {
  return 2 * Math.PI * r;
};

(2)当改变任意一个的指向时,如:exports = function(x) {console.log(x)};二者的联系便中断了

(3)如果一个模块的对外接口,就是一个单一的值,不能使用exports输出,只能使用module.exports输出。

如果你觉得,exports与module.exports之间的区别很难分清,一个简单的处理方法,就是放弃使用exports,只使用module.exports。

猜你喜欢

转载自blog.csdn.net/wangcuiling_123/article/details/78588366
今日推荐