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

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

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

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

本文内容中说起到了上篇中一些经验分享,在阅读本文以前能够阅读上篇详细了解。 设计模式

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

Node Modules是单例模式吗

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

1620729244339.png

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

2.png

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

构造函数

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

3.png

这一部份内容下面要继续在app.js中使用:开发工具

4.png

咱们能够看到两个不一样的例子,而且能够直观感觉到这之间的不一样。不用太担忧不一样的问题,后文中将会介绍其余例子和解决方案。
如今咱们开始介绍关于咱们本次的主题,关于如何使用模块管理应用程序。ui

应用程序构建

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

5.png

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

6.png

咱们在图书管理模块下建立了几个项目,在这这模块中咱们能够看到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重构以后的样子:

9.png

总结

本文中介绍的应用程序内容都十分基础,咱们经过学习Node.js依赖性管理的一些基础知识和一些创建项目结构的经常使用方法来进行了文件模块管理。
咱们还看到Node.js应用程序中使用JavaScript设计模式的相关知识,而且也经过一些简单的例子进行说明。

拓展阅读

了解了Node.js的依赖关系管理后,进一步了解使用Node包管理器实如今线表格编辑内容。