在Node.js中,有两种方式可以导出模块:使用module.exports
和使用exports
。它们基本上是等效的,但是它们之间有一些微小的差异,这篇文章将探讨这些差异并提供指导。
module.exports
module.exports
是一个对象,用于导出当前模块的函数、类或其他对象。如果一个文件只导出一个对象,则通常使用module.exports
。
示例代码
// 导出单个函数 function add(a, b) { return a + b; } module.exports = add;
-- -------------------- ---- ------- -- --- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- - -- ----------- ----- ------- - - -------------- - -------
-- -------------------- ---- ------- -- --------- -------------- - - ---- ----------- -- - ------ - - -- -- --------- ----------- -- - ------ - - -- -- --------- ----------- -- - ------ - - -- - --
exports
exports
是module.exports
的一个引用。因此,exports.foo
和module.exports.foo
是相同的。当你想导出模块时,你可以使用exports
,就像你使用module.exports
一样。
示例代码
// 导出单个函数 exports.add = function(a, b) { return a + b; };
-- -------------------- ---- ------- -- --- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- - -- ----------- ----- ------- - - -------------- - -------
-- -------------------- ---- ------- -- --------- ----------- - ----------- -- - ------ - - -- -- ---------------- - ----------- -- - ------ - - -- -- ---------------- - ----------- -- - ------ - - -- --
module.exports vs exports
虽然module.exports
和exports
看起来相同,但它们之间有一个重要的区别。当你设置module.exports
时,它将覆盖任何之前的赋值给exports
的值。因此,如果你想导出一个单一的对象或函数,你应该使用module.exports
。
示例代码
-- -------------------- ---- ------- -- ----------------- ------- - ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- - -- ----------- ----- ------- - --
-- -------------------- ---- ------- -- ----------------- ----- ------ - ----------------- ---- - --------- - ----- -------- - ---- - ---------- - ------------------- -- ---- -- ------------ --- - -- ----------- ----- ------- - - -------------- - -------
总结
在Node.js中,module.exports
和exports
都可以用于导出模块。一般来说,如果你只想导出一个对象或函数,你应该使用module.exports
。如果你要导出多个对象或函数,你可以使用exports
,但是需要小心,因为当你设置module.exports
时,它会覆盖之前分配给exports
的任何值。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/8081