共性
作用都是將檔案模組的方法屬性暴露給require返回的物件進行呼叫。
區別
包含關係
exports ⊆ module.exports
也就是說module.exports可以替代exports,反之則不行。
實際上,exports是指向module.exports的引用,module.exports的初始值是一個空物件{},require()返回的是module.exports而不是exports.所以一旦module.exports有了新的引用,exports就和module.exports失去聯絡,導不出了。
//person.js
exports.name = 'sicily';
console.log(module.exports)//{name:'sicily'}
module.exports = {name:'becky'};
複製程式碼
show.js
var person = require('./person');
console.log(person.name)//becky
複製程式碼
也可以這樣理解:exports是給module.exports新增屬性和方法。
返回資料型別
exports返回object物件,module.exports方法還可以單獨返回一個資料型別。當需要返回一個類,陣列,字元創時,就必須用module.exports.