ES中的export和modules.export有什么区别

时间:2016-10-20 16:32:56

标签: javascript node.js

有时我看到: 导出默认类...

并且

module.exports = ...

有什么区别?我们将在哪种情况下使用哪一个?

1 个答案:

答案 0 :(得分:1)

只是澄清一下。这特定于node.js

在节点中创建一个模块就像是将它包装在类似下面的函数中。实际上,这或多或少都是节点正在做的事情。

app.py

因此,exports变量实际上是对module.exports的引用,就像那样,你可以有两个指向同一个对象的变量。导出和module.exports引用内存中的相同位置。你必须对使用出口有点小心,因为有一些“黑暗”的东西。与javascript对象连接的部分,有些模式可以破解。这是一个例子:

dependency_exports.js

function (exports, require, module, __filename, __dirname) {

}

<强> app.js

exports = function () {
  console.log('dependency');
}
// Place console.log to see the contents of the exports and module.exports
console.log(exports);
console.log(module.exports);

为什么dependency_exports.js文件中的两个console.logs如果指向同一个内存则会打印不同的对象?请记住,导出它是对module.exports的引用。 当我们为该变量(导出)分配另一个值时,我们打破了引用并在内存中创建了一个新的位置。 它不会更新module.exports中的引用。

现在,如果我们尝试做类似的事情:

var dependency = require('./dependency_exports');
dependency();

由于这个问题,我们会看到一个错误。