Node.js NPM 教程:如何创建、扩展、发布模块

Node.js 模块

Node.js 中的模块是单个单元中代码的逻辑封装。始终以更易于管理和维护的方式隔离代码始终是一种良好的编程习惯。这就是 Node.js 中的模块发挥作用的地方。

由于每个模块都是具有自己封装功能的独立实体,因此可以将其作为单独的工作单元进行管理。

Node.js 中的模块是什么?

如前所述,Node js 中的模块是一种将代码封装在单独逻辑单元中的方式。市场上有许多现成的模块可用于 Node js 中。

以下是 Node js 应用程序中使用的一些流行模块

  1. 快递框架 – Express 是一个极简且灵活的 Node js Web 应用程序框架,它为 Web 和 通过手机捐款 领域广泛应用,提供了卓越的解决方案。
  2. 套接字 – Socket.IO 支持实时双向基于事件的通信。此模块适合创建基于聊天的应用程序。
  3. Jade – Jade 是一个高性能模板引擎,并采用 JavaScript 适用于节点和浏览器。
  4. MongoDB ——由数百家创建、维护和提供物联网(IoT)全球开放标准的公司所组成的 MongoDB Node.js 驱动程序是官方支持的 node.js 驱动程序 MongoDB.
  5. 恢复 – restify 是一个轻量级框架,类似于 express,用于构建 REST API
  6. 知更鸟 – Bluebird 是一个功能齐全的承诺库,专注于创新功能和性能

在 Node.js 中使用模块

为了在 Node.js 应用程序,首先需要使用 Node 包管理器进行安装。

下面的命令行显示如何安装模块“express”。

npm 安装快递

在 Node.js 中使用模块

  • 上述命令将下载包含“express 模块”的必要文件,并负责安装
  • 安装模块后,为了在 Node.js 应用程序中使用模块,您需要使用“require”关键字。此关键字是 Node.js 用于将模块的功能合并到应用程序中的一种方式。

让我们看一个例子来了解如何使用“require”关键字。下面的“Guru99”代码示例展示了如何使用require函数

在 Node.js 中使用模块

var express=require('express');
var app=express();
app.set('view engine','jade');
app.get('/',function(req,res)
{
});
var server=app.listen(3000,function()
{
});
  1. 在第一个语句中,我们使用“require”关键字来包含 express 模块。“express”模块是一个优化的 JavaScript Node.js 开发的库。这是最常用的 Node.js 模块之一。
  2. 模块被引入后,为了使用模块内的功能,需要创建一个对象。这里创建了一个 express 模块的对象。
  3. 一旦使用“require”命令包含模块并创建“对象”,就可以调用 express 模块所需的方法。这里我们使用 set 命令来设置视��引擎,该引擎用于设置 Node.js 中使用的模板引擎。
  4. 注: - (仅供读者理解;模板引擎是一种通过从数据文件中获取数据来向应用程序中注入值的方法。这个概念在 Angular JS 中非常有名,其中花括号 {{ key }} 用于替换网页中的值。花括号中的“key”一词基本上表示在显示页面时将被值替换的变量。)

  5. 这里我们使用 listen to 方法让应用程序监听特定的端口号。

如何创建 NPM 模块

Node.js 具有创建自定义模块的能力,并允许您将这些自定义模块包含在您的 Node.js 应用程序中。

让我们看一个简单的例子,看看如何创建我们自己的模块并将该模块包含在我们的主要应用程序文件中。我们的模块将只执行将两个数字相加的简单任务。

让我们按照以下步骤了解如何创建模块并将其包含在我们的应用程序中。

以下是如何创建 NPM 模块的分步过程

步骤1) 创建一个文件并粘贴以下代码
创建一个名为“Addition.js”的文件并包含以下代码。此文件将包含模块的逻辑。

以下是该文件中的代码;

创建 NPM 模块

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};
  1. “exports”关键字用于确保该文件中定义的功能实际上可以被其他文件访问。
  2. 然后我们定义一个名为“AddNumber”的函数。此函数定义为采用 2 个参数,a 和 b。该函数被添加到模块“exports”,以使该函数成为可由其他应用程序模块访问的公共函数。
  3. 我们最终让我们的函数返回参数的附加值。

现在我们已经创建了具有将 2 个数字相加功能的自定义模块。现在是时候创建一个将调用此模块的应用程序了。

在下一步中,我们将实际看到如何创建调用自定义模块的应用程序。

步骤2) 创建应用程序文件
创建一个名为“app.js”的文件,它是您的主应用程序文件,并添加以下代码

创建 NPM 模块

var Addition=require('./Addition.js');
console.log(Addition.AddNumber(1,2));
  1. 我们使用“require”关键字将功能包含在 Addition.js 文件中。
  2. 由于 Addition.js 文件中的函数现在可以访问,我们现在可以调用 AddNumber 函数。在函数中,我们传递 2 个数字作为参数。然后我们在控制台中显示该值。

创建 NPM 模块

输出:

  • 当你运行 app.js 文件时,你将在控制台日志中得到值 3 的输出。
  • 结果是因为Addition.js文件中的AddNumber函数调用成功,并且在控制台中显示了返回值3。

注意: – 我们目前还没有使用“Node 包管理器”来安装 Addition.js 模块。这是因为该模块已经是我们本地计算机上项目的一部分。当您在互联网上发布模块时,Node 包管理器就会出现,我们将在后续主题中看到。

在 Node.js 中扩展模块

创建模块时,也可以扩展或继承一个模块到另一个模块。

在现代编程中,构建常用模块库然后在需要时扩展这些常用模块的功能是很常见的。

让我们看一个如何在 Node.js 中扩展模块的例子。

步骤1) 创建基础模块。

在我们的示例中,创建一个名为“Tutorial.js”的文件并放置以下代码。

在这段代码中,我们只是创建了一个向控制台返回字符串的函数。返回的字符串是“Guru99 Tutorial”。

在 Node.js 中扩展模块

var exports=module.exports={};
exports.tutorial=function()
{
console.log("Guru99 Tutorial")
}
  1. 使用 exports 模块是为了确保此文件中定义的任何函数都可以在 Node.js 中的其他模块中使用
  2. 我们正在创建一个名为 tutorial 的函数,它可以在其他 Node.js 模块中使用。
  3. 当调用此函数时,我们在控制台中显示字符串“Guru99 Tutorial”。

现在我们已经创建了名为 Tutorial.js 的基础模块。现在是时候创建另一个模块来扩展此基础模块了。

下一步我们将探讨如何做到这一点。

步骤2) 接下来,我们将创建扩展模块。创建一个名为“NodeTutorial.js”的新文件,并将以下代码放入文件中。

在 Node.js 中扩展模块

var Tutor=require('./Tutorial.js');
exports.NodeTutorial=function()
{
console.log("Node Tutorial")
function pTutor()
{
var PTutor=Tutor
PTutor.tutorial();
}
}

Or
var Tutor=require('./Tutorial.js');
exports.NodeTutorial=function()
{
console.log("Node Tutorial")
this.pTutor = function ()
{
var PTutor=Tutor
PTutor.tutorial();
}
}

请注意,上述代码的关键点如下

  1. 我们在新模块文件本身中使用了“require”函数。由于我们要扩展现有的模块文件“Tutorial.js”,因此在扩展之前,我们需要先将其包含进去。
  2. 然后我们创建一个名为“Nodetutorial”的函数。这个函数将做两件事,
  • 它将向控制台发送字符串“Node Tutorial”。
  • 它会将字符串“Guru99 Tutorial”从基础模块“Tutorial.js”发送到我们的扩展模块“NodeTutorial.js”。
  1. 这里我们执行第一步,将字符串“Node Tutorial”发送到控制台。
  2. 下一步是从我们的 Tutorial 模块调用该函数,它将字符串“Guru99 Tutorial”输出到 console.log。

步骤3) 创建您的主 app.js 文件,它是您的主应用程序文件,并包含以下代码。

在 Node.js 中扩展模块

var localTutor=require('./NodeTutorial.js');
localTutor.NodeTutorial();
localTutor.NodeTutorial.pTutor();

Or use this code
var tut = new localTutor.NodeTutorial();  // Create and save object
tut.pTutor();  // Call function on object

上面的代码做了以下事情;

  1. 我们的主要应用程序文件现在调用“NodeTutorial”模块。
  2. 我们正在调用“NodeTutorial”函数。通过调用此函数,文本“Node Tutorial”将显示在控制台日志中。
  3. 由于我们扩展了 Tutorial.js 模块,并公开了一个名为 pTutor 的函数。它还会调用 Tutorial.js 模块中的 tutorial 模块,并且文本“Guru99 Tutorial”也会显示在控制台上。

输出:

由于我们已经使用 Node 执行了��述 app.js 代码,我们将在 console.log 文件中得到以下输出

  • Node 教程
  • Guru99教程

NPM(Node 包管理器)发布包

可以将自己的模块发布到自己的 Github 库。

通过将模块发布到中心位置,您就不需要在每台需要它的机器上进行安装。

相反,您可以使用 npm 的安装命令并安装已发布的 npm 模块。

发布 npm 模块需要遵循以下步骤

步骤1) 在 GitHub(在线代码库管理工具)上创建你的代码库。它可用于托管你的代码库。

第四步) 您需要告诉本地 npm 安装您是谁。这意味着我们需要告诉 npm 谁是此模块的作者、电子邮件 ID 是什么以及任何可用的公司 URL,这些 URL 需要与此 ID 关联。所有这些详细信息都将在您的 npm 模块发布时添加到其中。

以下命令设置 npm 模块作者的姓名、电子邮件和 URL。

npm 设置 init-author-name“Guru99”。

npm 设置初始化作者电子邮件“guru99@gmail.com”

npm 设置 init-author-url “http://Guru99.com”

步骤3) 下一步是使用上一步提供的凭据登录 npm。要登录,您需要使用以下命令

npm login

步骤4) 初始化包 – 下一步是初始化包以创建 package.json 文件。这可以通过发出以下命令来完成

npm init

当你发出上述命令时,系统会提示你一些问题。其中最重要的是模块的版本号。

步骤5) 发布到 GitHub – 下一步是将源文件发布到 GitHub。可以通过运行以下命令来完成。

git add.
git commit -m "Initial release"
git tag v0.0.1 
git push origin master --tags

步骤6) 发布模块 – 最后一步是将模块发布到 npm 注册表中。这可以通过以下命令完成。

npm publish

使用 npm 管理第三方包

正如我们所见,“Node 包管理器”能够管理 Node.js 应用程序所需的模块。

让我们看一下节点包管理器中用于管理模块的一些功能

  1. 以全局模式安装软件包 – 模块可以在全局级别安装,这基本上意味着这些模块将可用于本地计算机上的所有 Node.js 项目。下面的示例显示了如何使用全局选项安装“express 模块”。npm install express –global 上述语句中的全局选项允许在全局级别安装模块。
  2. 列出本地计算机上安装的所有全局包。这可以通过在命令提示符中执行以下命令来完成npm 列表 –全局如果您之前在系统上安装了“express 模块”,则会显示以下输出。在这里您可以看到本地机器上安装的不同模块。

使用 NPM 管理第三方包

  1. 安装软件包的特定版本 – 有时可能需要仅安装软件包的特定版本。一旦您知道软件包名称和需要安装的相关版本,就可以使用 npm install 命令来安装该特定版本。下面的示例显示了如何使用特定版本 1.7.0 安装名为 underscore 的模块npm install 下划线@1.7.0
  2. 更新软件包版本 – 有时系统中的软件包版本可能较旧,您可能希望更新到市场上可用的最新版本。为此,可以使用 npm update 命令。以下示例显示如何将 underscore 软件包更新到最新版本npm 更新下划线
  3. 搜索特定软件包 – 要搜索本地系统上是否有特定版本,可以使用 npm 的搜索命令。下面的示例将检查本地机器上是否安装了 express 模块。npm 搜索 express
  4. 卸载包 – 就像安装包一样,也可以卸载包。卸载包是通过 npm 的卸载命令完成的。以下示例显示了如何卸载 express 模块npm 卸载 express

什么是 package.json 文件

“package.json”文件用于保存 关于特定项目的元数据。此信息为 Node 包管理器提供了必要的信息,以了解如何处理项目及其依赖项。

package.json 文件包含项目描述、特定发行版中的项目版本、许可证信息和配置数据等信息。

package.json 文件通常位于 Node.js 项目的根目录中。

让我们举一个例子来说明一下通过 npm 安装模块时其结构。

下面的快照显示了 express 模块包含在 Node.js 项目中时的文件内容。从快照中,您可以看到 express 文件夹中的 package.json 文件。

Package.json 文件

如果你打开 package.json 文件,你会看到文件中有很多信息。

下面是该文件的一部分的快照。 express@~4.13.1 提到正在使用的 express 模块的版本号。

Package.json 文件

结语

  • Node.js 中的模块是单个单元中代码的逻辑封装。分离成模块使代码更易于管理和维护,以备将来使用
  • 市场上有许多可以在 Node.js 中使用的模块,例如 express、underscore、 MongoDB等等。
  • 节点包管理器 (npm) 用于下载和安装模块,然后可在 Node.js 应用程序中使用。
  • 可以创建自定义 NPM 模块、扩展这些模块并发布这些模块。
  • Node 包管理器有一整套完整的命令来管理本地系统上的 npm 模块,例如安装、卸载、搜索等。
  • package.json 文件用于保存 npm 模块的全部元数据信息。

总结一下这篇文章: