有时我看到: 导出默认类...
并且
module.exports = ...
有什么区别?我们将在哪种情况下使用哪一个?
答案 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();
由于这个问题,我们会看到一个错误。