一個節點模塊基本上是這樣的:
var module = {
exports: {}
};
(function (exports, require, module, __filename, __dirname) {
// your module code here
})(module.exports, require, module, __filename, __dirname);
var exported = module.exports;
默認情況下,exports
和module.exports
都指向同一個對象。正常情況下,您可以向對象添加屬性。然而,如果你想返回一個函數或其他對象而不僅僅是默認的標準對象呢?
在這種情況下,您可以將module.exports
設置爲其他值,那將是新導出的對象。
module.exports = function() {};
和當然,該功能可以有屬性,這樣你的代碼是那種,像這樣的:
module.exports = function(){};
module.exports.compile = function() {};
module.exports.format = function() {};
module.exports.token = function() {};
這將等同於:
var morgan = function() {};
var compile = function() {};
var format = function() {};
var token = function() {};
morgan.compile = compile;
morgan.format = format;
morgan.token = token;
module.exports = morgan;
一個函數(摩根)如何分配給module.exports?在執行第一行之後,module.exports是一個函數而不是一個JSON對象?
是的,module.exports
將是一個函數,代替默認對象(但這裏沒有JSON,JSON不是JavaScript對象,而是編碼格式)。
我讀到「Nodejs模塊導出混淆」。 (肯定會+1) – sweaver2112