module.exports与exports
module.exports与exports经常能让人弄混,其实module.exports才是真正的对外接口,exports只是对它的引用,即一种辅助、简化写法的工具。
他们之间的关系类似于:
var obj1= {};
var obj2= obj1;
obj1.a= 1;
obj2.b= 2;
console.log(obj1.a, obj1.b); //1, 2
console.log(obj2.a, obj2.b); //1, 2
//obj2是对obj1的引用,两者此时共用一个内存空间。
obj2= {c: 3};
console.log(obj1.c) //undefined
//此时obj2拥有了独立的内存空间
module.exports与exports的关系类似如此,因此经常能看见如下的操作
module.exports= exports= something; 只是为了防止exports拥有了独立内存后数据没有传给module.exports。