gpt4 book ai didi

node.js - module.export 和 export 有什么区别

转载 作者:搜寻专家 更新时间:2023-11-01 00:12:31 27 4
gpt4 key购买 nike

module.exportexport有什么区别?

如果module.export对象中有一些属性怎么办?export.xx 会无效吗?

最佳答案

首先是 exportsmodule.exports 而不是 exportmodule.export (有也是 JavaScript 中的 export 关键字,但 Node 尚不支持)。

每个 Node 模块都用这个函数包装:

(function (exports, require, module, __filename, __dirname) {
// Your module code actually lives in here
});

参见:https://nodejs.org/api/modules.html#modules_the_module_wrapper

您的模块并不像某些人认为的那样从该函数返回导出的对象。它只能通过向提供的参数添加属性 将数据传递给调用方。

module.exportsexports 最初是同一个对象 - 但它是 module.exports如果它们最终不是同一个对象,则实际导出

这意味着这将工作相同:

module.exports.x = 1;
# or:
exports.x = 1;

因为它改变了同一个对象的属性。

但这不会是一样的:

module.exports = {x: 1};

像这样:

exports = {x: 1};

最后一个将不导出 x 因为它将替换 exports 中的对象(即最初与 module.exports相同对象),同时在 module.exports 中保留默认的空对象以实际导出。

module.exports = {x: 1}; 也替换一个新对象,但它将它放在实际导出所需的位置。请注意,此指令更改了module 对象的属性,在包含您的模块的隐式函数返回后调用者可以看到。

现在这行得通了:

exports = {x: 1};
module.exports = exports;

因为它将 exports 中的对象替换为一个新对象,但它也将其放入 module.exports 中。

请记住,如果您没有用新对象替换其中之一,那么最后总是 module.exports 很重要,然后您可以在设置它们的属性时互换使用它们:

exports.x = 1;
module.exports.y = 2;

有关详细信息,请参阅此答案:

关于node.js - module.export 和 export 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43397761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com