小编典典

Node.js中的module.exports与export

javascript

我在Node.js模块中找到了以下合同:

module.exports = exports = nano = function database_module(cfg) {...}

我不知道什么之间的不同module.exportsexports为什么都被用在这里。


阅读 389

收藏
2020-04-25

共1个答案

小编典典

设置module.exports允许在database_module时像函数一样调用函数required。简单地设置exports将不允许导出函数,因为节点导出了对象module.exports引用。以下代码不允许用户调用该函数。

module.js

以下内容无效。

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.exportsexports确保exports未引用先前的导出对象。通过将两者都设置exports为简写,可以避免以后出现潜在的错误。

使用exports.prop = true 而不是module.exports.prop = true保存字符并避免混淆。

2020-04-25