一个节点模块基本上是这样的:
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