Node.js 模块是什么
在Node.js应用程序中,模块可以被视为提供与外部应用程序通信的简单或复杂功能的代码块。模块可以组织在单个文件或多个文件/文件夹的集合中。几乎所有程序员都喜欢模块,因为它们可以在整个应用程序中重复使用,并能够将复杂的代码分解成较小的模块。
Node.js使用的是CommonJS模块标准的实现。
模块的类型: 在Node.js中,有三种类型的模块:
- 核心模块
- 本地模块
- 第三方模块
核心模块: Node.js自带了几十个内置模块。这些内置模块有时也被称为核心模块。模块系统是围绕require函数构建的。这个函数用于加载模块并访问其内容。require是一个提供给所有Node.js脚本的全局变量,所以你可以在任何地方使用它。require()函数将根据你的模块返回一个JavaScript类型。
导入模块的语法:
如何使用核心模块: 您可以直接在应用程序中使用Node.js的核心模块,无需任何安装。 ****让我们来看一个文件系统(fs
)模块的示例,来处理应用程序中的文件。
初始时,项目目录看起来像这样:
示例: 将以下代码写入index.js文件中
上面的脚本使用 require 加载 fs 模块。这是一个内置的 Node.js 模块,它提供了可以用来操作文件系统的函数。脚本使用 writeFileSync 将一条消息写入 notes.txt。
要运行该脚本,请在终端上使用以下命令。
在运行脚本后,你会注意到你的目录中出现了一个新的notes.txt文件。打开它,你会看到“我喜欢编码”。
输出: 现在我们的目录中有一个新文件notes.txt。上面写着“我喜欢编码”。
以下是一些Node.js核心模块的列表:
核心模块名称 | 描述 |
---|---|
fs | 处理文件系统。 |
http | 使 Node.js 充当 HTTP 服务器。 |
https | 使 Node.js 充当 HTTPS 服务器。 |
os | 提供操作系统信息。 |
path | 处理文件路径。 |
cluster | 将单个 Node 进程拆分成多个进程。 |
dns | 执行 DNS 查询和名称解析功能。 |
tls | 实现 TLS 和 SSL 协议。 |
querystring | 处理 URL 查询字符串。 |
url | 解析 URL 字符串。 |
events | 处理事件。 |
timers | 在给定的毫秒数后执行函数。 |
本地模块:
将所有代码放在一个文件中并不是一个好主意。随着你添加更多代码,你会希望保持有序,并将你的Node.js应用程序拆分为多个脚本,它们都能够一起工作。为此,我们可以在我们的应用程序中创建本地模块。
从文件中导出:
首先,我们需要创建一个名为utils.js的文件。现在,我们可以使用module.exports导出在这个文件上编写的JavaScript代码。下面定义了一个函数并将其赋值给module.exports。
项目设置:
- Utils.js: 把以下代码写入utils.js文件中
导入自己的文件: 现在我们需要将本地文件导入到 index.js 中。require函数也可以用于导入目录中的文件。您只需要为require提供一个相对路径,指向您想要加载的脚本。这个路径应该以./开头,然后链接到需要加载的文件。
文件名:- 在index.js文件中
上面的代码使用 require 来加载 src 目录下的 utils.js 文件。它将模块内容存储在一个变量中,然后在脚本中使用这些内容。
如果你运行上面的 index.js 脚本,你将会看到从 utils.js 文件中定义的 tests 函数记录的消息。
输出:
第三方模块: 可从在线的NPM(Node Package Manager)安装第三方模块。
首先,我们需要使用 npm init 命令初始化npm,然后才能使用npm。它会在根目录下创建一个package.json文件,这个文件存储了我们已安装的第三方模块的所有信息。
安装NPM模块:
上述命令将执行以下操作:
首先,它创建了node_modules目录,npm用来存储你安装的所有npm模块的代码。其次,npm将模块添加为依赖项,通过在package.json文件中列出它们在dependencies属性中,最后,npm创建了一个package-lock.json文件。该文件用于存储有关您安装的模块的信息,有助于保持操作的快速和安全。
第三方模块的示例:
- npm install express
- npm install lodash
- npm install mocha
让我们通过一个示例来看如何使用第三方模块:
- validator 是一个常用模块,用于字符串验证和清理。
要安装,请运行以下命令:
npm模块可以使用require导入到您的脚本中。要加载npm模块,请将npm模块名称传递给require:
index.js: 将以下代码写入index.js文件中:
输出: