90%的人都不知道的Node.js 依赖关系管理(下)

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。
原文参考:https://dzone.com/articles/node-dependency-management-part2

在上篇介绍Node.js依赖关系管理的文章中,我们介绍了关于Node.js模块的基础知识,如何使用module.exports和require方法处理依赖项,以及文件夹依赖项(folder dependencies)的工作方式和工作原理。

今天我们将继续从这一点出发,来了解如何使用这个系统模块将应用程序分解成多个模块,以及这样做的优势和Node.js的工作原理。

本文内容中提及到了上篇中一些经验分享,在阅读本文之前可以阅读上篇详细了解。

在我们继正式开始了解学习如何使用多个模块设置应用程序之前,我们一起来了解Node.js模块一些其他方面的有趣内容。

Node Modules是单例模式吗

在上一篇文章中,我们讨论了Node.js一次只会加载一个模块。如果发出请求,Node.js会给出该模块的缓存副本。因此看起来这些模块的行为就像独生子女。这里我们看一个例子,来说明这种情况。
首先,我们为应用程序创建了一个项目,初始化应用程序,并创建了一个文件user.js,如下所示:

接着,在APP.JS中我们会使用用户模块(user module),并按照如下方式使用:

可以看到我们创建两了两个用户,只要对其中一个变量做出修改就会影响另一个变量的内容。我们必须意识到用户模块会被缓存,并在进行另一个请求的时间内被重用。
接下来我们把它改成一个构造函数,看看他如何进行工作

构造函数

我们在上篇内容中介绍了构造函数,实现了user.js的更改:

这一部分内容下面要继续在app.js中使用:

4.png

我们可以看到两个不同的例子,并且可以直观感受到这之间的不同。不用太担心不同的问题,后文中将会介绍其他例子和解决方案。
现在我们开始介绍关于我们本次的主题,关于如何使用模块管理应用程序。

应用程序构建

我们开始搭建一个简单的应用程序基础,接下来会在讲解的过程中不断对它进行细化。
我们已经创建了一些新的文件夹,现在程序中包含的结构如下:

首先我们给不同的模块创建了单独的文件夹。现在已经有的图书管理文件夹,另一个用于日志记录器文件夹,类似于用户管理。这样我们的每个模块都有重点,易于定位和管理。同时在每个文件夹内都有子文件夹。这里我们需要注意文件夹级别的index.js文件,它将作为模块的API。
然后在app.js中我们可以通过require引用模块,看到它按照预期工作的工程。注意我们如何通过require user.js来引用它。
现在我们来更新代码内容:

我们在图书管理模块下创建了几个项目,在这这模块中我们可以看到book.js遵循常见JavaScript构造函数模式(但与user.js中看到的构造函数示例略有不同)。
在相应的index.js文件中有以下代码:

7.png

index.js作为模块的API,让我们在app.js中使用它,如下所示:

8.png

将user.js改为与book.js相同的构造函数模式后我们的程序正按照预期工作。这里提示一点,我们可以使用Node.js中其他语言的现有JavaScript内容进行编写。根据自己的偏好进行选择就可以。

下面是代码user.js重构之后的样子:

总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpzgy.html