module.exports VS Node.js出口

在Node.js中,有两种方式可以导出模块:使用module.exports和使用exports。它们基本上是等效的,但是它们之间有一些微小的差异,这篇文章将探讨这些差异并提供指导。

module.exports

module.exports是一个对象,用于导出当前模块的函数、类或其他对象。如果一个文件只导出一个对象,则通常使用module.exports

示例代码

-- ------
-------- ------ -- -
  ------ - - --
-

-------------- - ----
-- ---
----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -
  
  ---------- -
    ------------------- -- ---- -- ------------ --- - -- ----------- ----- -------
  -
-

-------------- - -------
-- ---------
-------------- - -
  ---- ----------- -- -
    ------ - - --
  --
  --------- ----------- -- -
    ------ - - --
  --
  --------- ----------- -- -
    ------ - - --
  -
--

exports

exportsmodule.exports的一个引用。因此,exports.foomodule.exports.foo是相同的。当你想导出模块时,你可以使用exports,就像你使用module.exports一样。

示例代码

-- ------
----------- - ----------- -- -
  ------ - - --
--
-- ---
----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -
  
  ---------- -
    ------------------- -- ---- -- ------------ --- - -- ----------- ----- -------
  -
-

-------------- - -------
-- ---------
----------- - ----------- -- -
  ------ - - --
--

---------------- - ----------- -- -
  ------ - - --
--

---------------- - ----------- -- -
  ------ - - --
--

module.exports vs exports

虽然module.exportsexports看起来相同,但它们之间有一个重要的区别。当你设置module.exports时,它将覆盖任何之前的赋值给exports的值。因此,如果你想导出一个单一的对象或函数,你应该使用module.exports

示例代码

-- -----------------
------- - ----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -
  
  ---------- -
    ------------------- -- ---- -- ------------ --- - -- ----------- ----- -------
  -
--
-- -----------------
----- ------ -
  ----------------- ---- -
    --------- - -----
    -------- - ----
  -
  
  ---------- -
    ------------------- -- ---- -- ------------ --- - -- ----------- ----- -------
  -
-

-------------- - -------

总结

在Node.js中,module.exportsexports都可以用于导出模块。一般来说,如果你只想导出一个对象或函数,你应该使用module.exports。如果你要导出多个对象或函数,你可以使用exports,但是需要小心,因为当你设置module.exports时,它会覆盖之前分配给exports的任何值。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/8081