module.exports与exports的区别
每一个node.js执行文件,都自动创建一个module对象,同时,module对象会创建一个叫exports的属性,初始化的值是{}
module.exports = {};
Node.js为了方便地导出功能函数,node.js会自动地实现以下这个语句
foo.js
exports.a = function () {
console.log('a')
}
var x =require('./foo');
console.log(x.a)
以上代码再node中输出的值是:1;exports实际上引用的是module.exports的值。module.exports被改变的时候,exports不会被改变,而模块导出的时候,真正导出的执行是module.exports,而不是exports。
再看看下面的例子:
foo.js
exports.a = function(){
console.log('a')
}
// 新增了一个导出
module.exports = {a: 2}
exports.a = 1
test.js