在默认情况下,module.exports 是一个Object, exports 是 module.exports 的一个引用。 通常都是通过 exports.xx = yy 来输出。
当模块要输出一个非Object时(比如一个Function),可以使用 module.exports = function () {} ,此时 module.exports 被覆盖了,而 exports 还是原来的对像的引用,为了避免在后面的代码中仍然使用 exports.xx = yy 而导致不能正确输出,需要把 exports 变量也重新设置为新的 module.exports 的引用,所以一般习惯写成 exports = module.exports = xxx
例如
test.js
module.exports = 'BigBear!' ;
exports.name = function() {
console.log('My name is sss!') ;
} ;
再次引用执行test.js
复制代码代码如下:
var bb= require('./test.js');
bb.name(); // has no method 'name'