sách gpt4 ai đã đi

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

In lại 作者:搜寻专家 更新时间:2023-11-01 00:12:31 27 4
mua khóa gpt4 Nike

module.exportxuất khẩuSự khác biệt là gì?

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

1 Câu trả lời

首先是 exportsmodule.exports Còn hơn là xuất khẩumodule.export (有也是 JavaScript 中的 xuất khẩu 关键字,但 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;

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

但这Sẽ không是一样的:

module.exports = {x: 1};

Giống như thế này:

exports = {x: 1};

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

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

现在这行得通了:

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

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

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

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

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

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

27 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com