我在Node.js模块中找到了以下合同:
module.exports = exports = nano = function database_module(cfg) {...}
我不知道什么之间的不同module.exports和exports为什么都被用在这里。
module.exports
exports
设置module.exports允许在database_module时像函数一样调用函数required。简单地设置exports将不允许导出函数,因为节点导出了对象module.exports引用。以下代码不允许用户调用该函数。
database_module
required
以下内容无效。
exports = nano = function database_module(cfg) {return;}
如果module.exports设置以下内容,则将起作用。
module.exports = exports = nano = function database_module(cfg) {return;}
安慰
var func = require('./module.js'); // the following line will **work** with module.exports func();
基本上, node.js 不会导出exports当前引用的对象,而是导出exports最初引用的对象的属性。尽管 Node.js 确实导出了对象module.exports引用,但允许您像调用函数一样调用它。
他们设置了两者module.exports并exports确保exports未引用先前的导出对象。通过将两者都设置exports为简写,可以避免以后出现潜在的错误。
使用exports.prop = true 而不是module.exports.prop = true保存字符并避免混淆。
exports.prop = true
module.exports.prop = true