V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GrapeCityChina
V2EX  ›  推广

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

  •  
  •   GrapeCityChina · 2021-06-02 11:31:23 +08:00 · 531 次点击
    这是一个创建于 1304 天前的主题,其中的信息可能已经有所发展或是发生改变。

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。

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

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

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

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

    Node Modules 是单例模式吗

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

    1620729244339.png

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

    2.png

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

    构造函数

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

    3.png

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

    4.png

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

    应用程序构建

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

    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 设计模式的相关知识,并且也通过一些简单的例子进行说明。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:49 · PVG 08:49 · LAX 16:49 · JFK 19:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.