转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,为开发者赋能。简介Node.js中的一个重要概念是依赖管理。本文将带您了解依赖管理的各种模式以及Node.js如何加载依赖。Node.js非常容易编写模块化代码,我们可以使用单个js文件非模块化地编写所有应用程序内容。这里你可能会问,什么是模块,它有什么作用。在大型项目的实施中,会有很多的分工和协作。为了让分工更方便顺畅,我们可以将写好的代码封装起来复用或者提供给第三方。所有模块在项目打包阶段组织编译成一个完整的程序。总而言之,模块是一组代码,便于在开发中共享和重用。这些模块使我们能够分解复杂的应用程序。以便我们更好地理解代码,查找和修复错误。基于CommonJS,在Node.js中使用require关键字来获取JavaScript文件。一开始,我们为项目创建了一个目录,使用npminit对其进行了初始化,并创建了两个JavaScript文件,app.js和appMsg.js。此时两个.js文件都是空的,我们继续更新appMsgs.js文件这里可以看到module.exports的用法,暴露了给定文件(appMsgs.js)中的属性或者对象,这些属性或者是对象可以在另一个文件中使用。在这个例子中,文件是app.js。该系统中的每个文件都可以访问module.exports,因此暴露了appMsgs.js文件中的一些项目。下面是这些内容的具体使用演示:使用require关键字Referencefile,使用时会返回一个代表模块化代码段的对象。我们将其分配给变量appMsgs变量,然后在console.log语句中使用该属性。获得以下输出:JavaScript已执行,构造了一个返回对象。这个对象可以是一个类构造函数,也可以是一个包含很多元素或一些简单属性的对象。因此,通过管理require和module.exports,我们可以创建这些模块化应用程序。所需的功能加载代码并且只加载一次。如果其他人通过require请求这个对象,他们只会得到这个对象的缓存版本。让我们看看修改代码的其他方法,以便导出整个函数而不是公开对象。这段代码会在每次函数被调用时执行这里是app.js文件中的使用方式不需要调用属性,只需要像函数一样执行即可。与函数执行不同的是,每次执行这段代码,都会重新执行函数中的代码。下面是运行结果。以上就是module.exports的两种模式及其区别。另一种常见的模式我们需要知道如何将其作为一个结构体来使用函数下面是更新后的app.js文件本质上这与在JavaScript中创建伪类并允许创建伪类的实例时是一样的,这里是更改后的输出这是该模式的另一个示例我们创建了一个名为userRepo.js的新文件下面是app.js和此更改的执行结果单个文件使用require很常见,但不要忘记另一个模式:文件夹之间的依赖文件夹依赖在官方介绍文件夹依赖之前,我们先来了解下Nodejs是如何寻找依赖的。不要忽略前面示例中的这些内容:varappMsgs=require("./appMsgs")Node.js会查找appMsgs.js文件,同时会将appMsgs视为一个目录,无论哪个先找到都会记录。然后我们创建一个名为logger的文件夹,在文件夹中创建一个index.js文件app.js文件,它用require调用这个模块,在这个例子中,值得注意的是:varlogger=require("./logger/index.js"),内容是完全正确的,但是如果改成如下:varlogger=require("./logger"),因为项目中没有logger.js,当有logger目录时,会默认加载index.js作为记录器的起点。这就是我们将这段代码的结果命名为index.js的原因:看到这里,您可能想知道为什么要费心创建文件夹和inex.js的额外步骤?原因是,我们可能正在组合一个可能具有其他依赖项的复杂依赖项。并且记录器的调用者不需要知道存在许多其他依赖项。这是一种封装形式,当我们构建更复杂的东西时,我们可以将它们构建在多个文件之外,并在用户端使用单个文件。文件夹是管理这些依赖项的好方法。NodePackageManager(NPM)将再次介绍的另一个内容是NPM。您必须了解它的功能并带来很多便利。使用的方法也很简单。我们可以使用npmnpminstallunderscore安装依赖项;然后我们可以在app.js中简单地require并且我们可以看到红色位置如何使用下划线包提供的功能。另外,当我们需要使用这个模块时,我们不指定文件路径,只使用它的名字,Node.js会从应用程序中的node_modules文件夹中加载这个模块以下是它的输出摘要本文涵盖Nodejs如何管理它的依赖关系,并看到了一些可以在我们的应用程序中使用的模式。希望对你的发展和学习有所帮助。延伸阅读欢迎下载试用纯前端表格控件SpreadJS,优化web系统中表格功能模块的性能。
