乐趣区

关于前端:90的人都不知道的Nodejs-依赖关系管理上

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

引言

Node.js 中的一个重要概念是依赖关系治理。本文就将带大家理解依赖治理的各种模式以及 Node.js 如何加载依赖。
Node.js 编写模块化代码非常简单,咱们能够应用单个 js 文件非模块化的编写所有应用程序的内容。
在这里你可能会问,模块(module)是什么,它又有什么作用。
大型项目的施行之中,会有很多分工协作,为了能够让分工更加不便和顺利,咱们能够将编写好的代码封装起来,重复使用或者提供给第三方应用。在我的项目封装阶段将所有模块组织编译成一个残缺程序。
总而言之,模块是代码为了便于在开发中共享和重用,而进行的分组。这些模块使咱们能够将简单的应用程序合成。以便让咱们更好地了解代码,发现并修复 Bug。基于 CommonJS,Node.js 中应用 require 这个关键字来获取一个 JavaScript 文件。

开始

咱们给我的项目创立一个目录,用 npm init 进行初始化,创立了 app.js 和 appMsg.js 两个 JavaScript 文件。


此时两个.js 文件都是空的,咱们来持续更新 appMsgs.js 文件

此处能够看到 module.exports 的用法,该办法公开给定文件(appMsgs.js)中的属性或对象,这些属性或对象能够在另一个文件中应用。本例中该文件是 app.js
在这个零碎中每个文件都能够拜访 module.exports,所以 appMsgs.js 文件中的一些项就被公开了,上面是具体应用这些内容的展现:

应用 require 关键字援用文件,应用的时候它将返回一个示意模块化代码段的对象。咱们将其调配给变量 appMsgs variable,而后在 console.log 语句中应用属性。失去以下输入:


执行 JavaScript,结构一个返回对象。这个对象能够是一个类构造函数,也能够是一个蕴含许多元素或一些简略属性的对象。
因而,通过治理 require 和 module.exports,咱们能够创立这些模块化应用程序。
所需的性能加载代码并只加载一次。如果其他人通过 require 申请这个对象,只会失去这个对象的缓存版本。

接下来看看其余办法

对代码进行批改,不再公开一个对象,而是导出整个函数。每次函数调用都会执行此代码
上面是它如何在 app.js 文件中应用

不须要调用属性,只须要像执行函数一样。与函数执行不同的是每次执行这个代码,函数中的代码都会被从新执行
上面是运行后果

以上是 module.exports 的两种模式及其差别,另一个常见模式中咱们须要晓得如何应用它作为构造函数

上面是更新后的 app.js 文件

实质上来说这样与在 JavaScript 中创立伪类并容许创立伪类的实例时是一样的,上面是更改之后的输入

以下是该模式的另一个例子
咱们创立一个名为 userRepo.js 的新文件

上面是 app.js 和此更改的执行后果

单个文件应用 require 很常见,但别忘了另一种模式:文件夹的之间的依赖关系

文件夹相关性

在正式介绍文件夹相关性之前,咱们先来理解 Nodejs 如何查找依赖项,不要疏忽后面例子中的这一内容:

var appMsgs = require("./appMsgs")

Node.js 会查找 appMsgs.js 文件,也会将 appMsgs 作为目录查找,无论它首先找到哪个都会进行记录。
接着咱们创立一个名为 logger 的文件夹,在该文件夹中创立一个 index.js 文件

app.js 文件,它用 require 调用这个模块

在这个例子中值得注意的是:

var logger = require("./logger/index.js")

该内容完全正确,但如果改成一下内容:

var logger = require("./logger")

因为我的项目中没有 logger.js,所以在有一个 logger 目录时,默认状况下会加载 index.js 作为 logger 的终点。这就是咱们命名 index.js 的起因,这段代码的后果:

看到这里,你可能会纳闷为什么还要费神去实现创立文件夹和 inex.js 的额定步骤呢?
起因是,咱们可能正在组合一个简单的依赖项,这个依赖项可能还有其余依赖项。而记录器的调用者不须要晓得还有很多其余依赖项存在。
这是一种封装模式,当咱们构建更简单的内容时,咱们能够用多个文件构建它们,而在用户端应用单个文件。文件夹是一种治理这些依赖关系的好办法。

Node Package Manager (NPM)

再次要介绍的另一个内容是 NPM,你肯定理解它的性能,带来了很多便当。应用的办法也很简略。
咱们能够应用 npm 装置依赖项

npm install underscore;

而后能够在 app.js 中简略地 require

咱们能够看到标红地位如何应用下划线包提供的性能。除此之外,当咱们须要应用这个模块时,并不指定文件门路,只须要应用它的名称,Node.js 将从应用程序中的 node\u modules 文件夹加载这个模块

上面是它的输入

总结

本文介绍了 Nodejs 如何治理它的依赖关系,并且在咱们的应用程序中看到了一些能够应用的模式。心愿能够对各位的开发学习带来帮忙。

拓展浏览

如果您曾经对 Node.js 的内容很相熟,还能够理解 web 零碎中对表格性能进行优化

退出移动版