exports其实是module中的一个属性,exports是module.exports的一个别名
exports = module.exports = {}
既然exports = module.exports为什么通常都是用module.exports而不是exports 举个例子: 有两个js文件,a.js和b.js,b想获取a中的内容 // a.jslet str = '今天天气很好啊!';exports = str;---***---// b.jslet b = require(./a.js);console.log(b); // {}
此时取的结果是{},原因在于nodejs在内置代码中输出结果时,用的是return module.exports
大致过程是这样的// 初始化的时候都是空对象exports = module.exports = {};// 此时给exports赋值了exports = str; // exports=‘今天天气很好啊!’,但是module.exports = {}// node在return时,返回的是module.exports的值,所以最后输出的结果为{}
如果我们不想用module.exports,只想用exports操作该怎么办呢!
// a.jsvar str = '今天天气很好啊!';// 给module中的exports属性值中添一个属性a,值为strexports.a = str; // => exports = module.exports = { a : '今天天气很好啊!'};---***---// b.jslet b = require(./a.js);// 这时就不能单纯的获取b,而是要表明获取的是b中的某一个具体属性,这里就是b.aconsole.log(b.a); // 今天天气很好啊!
由于这种操作比较麻烦,所以我们一般用module.exports