;
原文:module.exports – How to Export in Node.js and JavaScript,作者:Dillion MegidaJ9九游会官方网站
在编程中,模块是一个程序的组成部分,具有一个或多个功能或值。
这些值也可以在整个程序中共享,并可以以不同的方式使用。
在这篇文章中,我将告诉你如何在 Node.js 中通过导出和导入模块来共享函数和值。
你想导出模块,这样你就可以在你的应用程序的其他部分使用它们。
模块可以有不同的用途。它们可以提供简单的实用程序来修改字符串,可以提供 API 请求的方法,或者甚至可以提供常量和原始值。
当你导出一个模块时,你可以把它导入到你的应用程序的其他部分并使用它。
Node.js 支持 CommonJS 模块和 ECMAScript 模块。
在本文的其余部分,我们将专注于 CommonJS 模块,这是 Node.js 中打包模块的原始方法。
如果你想了解更多关于 ES 模块(以及 CommonJS 模块)的信息,你可以查看这份详细指南。
Node.js 已经导出了内置的模块,例如 fs、path 和 http。但你也可以创建你自己的模块。
Node.js 将 Node 项目中的每个文件视为一个模块,可以从文件中导出值和功能。
例如,你有一个 utility 文件 ,代码如下:
是一个模块,其他文件可以从中导入东西。但是 目前并没有输出任何东西。
你可以通过检查每个文件中的全局 对象来验证这一点。当你打印这个 utility 文件中的 全局对象时,你有:
对象有一个 属,正如你所看到的,它是一个空对象。
因此,任何试图从这个文件中导入任何东西的行为都会产生错误。
文件有一个 方法,可以用一些其他字符替换字符串中的字符。我们可以从这个模块导出这个函数,供其他文件使用。
方法如下:
现在, 可以在应用程序的其他部分使用。要使用它,你要像这样导入它:
你可以使用 从一个模块中导出函数和值:
或者使用 :
区别是什么?
这些方法是相同的。基本上, 是对 的引用。为了更好地理解这一点,让我们通过使用两种导出值的方式来填充 对象:
这里有两件事需要注意:
是将一个新对象重新分配给 属的一种方式。这个新对象只包含函数,所以 不再被导出。
那么有什么区别呢?
只用 关键字导出数值是一种快速导出模块中数值的方法。你可以在顶部或底部使用这个关键字,它所做的只是填充 对象。但如果你在一个文件中使用 ,请坚持在整个文件中使用它。
使用 是一种明确指定模块导出的方式。在一个文件中最好只存在一次。如果它存在两次,第二次声明就会重新分配 属,而模块只输出第二次声明中的内容。
因此,作为前面代码的解决方案,你可以像这样导出:
或者像这样:
Node.js 项目中的每个文件都被视为一个模块,可以导出值供其他模块使用。
是 Node.js 文件中的一个对象,用于保存该模块导出的值和函数。
在一个文件中声明一个 对象,指定从该文件中导出的值。导出后,另一个模块可以通过 全局方法导入这些值。