NestJS2025年3月17日 | 阅读 7 分钟 ![]() 欢迎来到NestJS教程。本教程旨在帮助您全面了解NestJS。您将从初学者级别开始学习,涵盖所有细微之处,帮助您完成安装,从零开始创建NestJS应用程序,并学习如何在日常场景中处理和实现。让我们开始吧。 什么是NestJS?NestJS 是一个非常流行且全面的 JavaScript 框架,它运行在Node.js的底层,用于构建可扩展、可靠和高效的服务器端应用程序。该框架基于Node.js环境,并完全支持TypeScript。它也可以通过Node.js的影响来扩展到使用Express.js。由于NestJS是一个完全支持TypeScript的框架,它可以让您像开发者一样完全用JavaScript编码,并允许您结合面向对象编程(OOP)、函数响应式编程(FRP)和纯函数式编程(FP)的概念。 幕后您可能不知道NestJS的某些基本构建块。具体来说,NestJS在强大的HTTP基础设施的底层大量使用像Express这样的服务器端框架。它也可以选择性地配置为使用Fastify,尽管Express被认为是默认选项。 NestJS旨在为开发人员提供一定程度的抽象机制,这样不仅可以整合内部的通用服务器端框架,如Fastify或Express,还可以暴露给开发人员选择的API。这些隐藏的层允许您像开发人员一样,可以自由地广泛使用第三方模块,并将它们置于NestJS平台之下,而无需操纵整个服务器端。 安装在开始使用NestJS创建后端应用程序之前,您需要确保您的本地计算机上已安装Nest CLI。如果尚未安装,请使用Node Package Manager(NPM)并按照以下命令的步骤进行操作。 不过,您可能需要确保Node.js和NPM已预装在您的本地系统中。如果没有,请按照 https://node.org.cn/ 上的说明安装Node.js。 一旦NestJS CLI安装完成,它就可以随时使用命令了。由于您是实际学习,请考虑创建一个小的NestJS项目,以便您可以动手实践并应用知识。要继续创建一个示例项目,请使用以下命令进行初始化。 执行此命令后,将在当前位置创建一个名为my-nestjs-01的新文件夹,并将所有默认项目模板下载到该文件夹中。 项目结构在为项目创建文件夹后,会创建NestJS的node模块以及其他样板依赖项,其中包括几个核心程序文件。这些核心文件可以从下面的图片中看到。它包含各种重要的源代码,这些源代码将在下面讨论。 ![]() 在上图的截图中,您可以直观地看到所有文件和依赖项,其中一些是核心文件。图中最重要的文件是src文件夹。这是TypeScript文件的仓库,您可以在其中找到应用程序代码。在此项目中,您将花费大部分时间在src文件夹中。所有这些核心文件将在下面讨论。 main.ts:这是应用程序的入口点。它包含一个NestFactory.create()方法,该方法创建一个Nest应用程序的新实例。 app.modules.ts:它包含应用程序实现的模块。 app.controller.ts:它只包含一个NestJS的路由实现控制器。 app.services.ts:这是通常的服务方法实现。 app.controller.specs.ts:这是控制器的测试文件。 现在,让我们仔细看看包含默认实现方法的main.ts文件。 在上面的代码中,首先,将NestFactory方法作为应用程序的入口点导入。接下来,从之前讨论的app.module文件中导入AppModule。其次,将bootstrap标记为async并实现。导入bootstrap函数的主要目的是调用它来执行代码。 其次,当调用NestFactory.create()方法时,执行开始,并将AppModule作为参数传递给根应用程序模块。这将通过创建一个新的NestJS实例来附加一个模块。下一步是使用Web服务器上的事件侦听器方法,以端口3000启动服务器。此方法将返回一个Promise,表明服务器已成功启动,并使用await关键字。 现在,您需要移动到根应用程序的实现,其中包含可在app.module.ts文件中找到的模块。其中的代码包含以下内容。 在上面的代码片段中,AppModule被导入为一个方法,并且@Module装饰器从@nestjs/共享库导入。传递的@Module装饰器包含三个属性:imports、controllers和providers。 AppModule中指定的控制器应始终是应用程序开发初期分配给该属性的数组的一部分,因为控制器的数量限制为AppController,它是根模块。此外,服务应在AppModule中随时可用,因此应列在分配给providers属性的数组中。 接下来,我们将查看AppController及其在app.controller.ts中的实现。代码如下。 上面的代码片段简单演示了NestJS中的一个控制器,它只包含一个GET路由。通过添加@Controller装饰器,类可以成为一个控制器。它也从@nestjs/导入,这是一个通用的库。 这里的重点是清楚地理解控制器通常依赖于服务类。在给定的示例中,AppController使用Appservice来实现app.services.ts文件,方法是导入顶部添加的相应语句。 然而,将AppService插入AppController的过程基于依赖注入方法,该方法默认添加相同类型的参数。然后实现一个默认路由,通过@Get装饰器处理HTTP GET请求,以实现getHello方法。因此,该方法由AppService提供支持,以获取数据并执行请求和响应操作,同时返回结果。 现在让我们转到下一个文件,观察app.services.ts文件。 上面的代码片段简单演示了NestJS中的一个控制器,它只包含一个GET路由。通过添加@Controller装饰器,类可以成为一个控制器。它也从@nestjs/导入,这是一个通用的库。 这里的重点是清楚地理解控制器通常依赖于服务类。在给定的示例中,AppController使用Appservice来实现app.services.ts文件,方法是导入添加在顶部的相应语句。 然而,将AppService插入AppController的过程基于依赖注入方法,该方法默认添加相同类型的参数。然后实现一个默认路由,通过@Get装饰器处理HTTP GET请求,以实现getHello方法。因此,该方法由AppService提供支持,以获取数据并执行请求和响应操作,同时返回结果。 现在让我们转到下一个文件,观察app.services.ts文件。 NestJS应用程序看起来是这样的。 ![]() 上面的图像没有意外。输出"Hello World!"是从getHello方法提供的服务中检索到的字符串,然后通过相应的控制器方法作为HTTP GET响应返回。 总结本教程足以涵盖NestJS学习的所有方面及其在现实生活中的应用,从安装到创建示例应用程序。在本教程中,您学习了NestJS的应用是什么,它多久使用一次,以及通常在哪里实际实现它。虽然NestJS在JavaScript开发人员中并不特别有用,但由于它完全支持TypeScript,许多开发人员利用其动态代码来解决设计模式问题。随着Node.js依赖性的增加,NestJS越来越受欢迎,它在底层运行,并与Express等框架一起使用。为了便于理解,您学习了如何通过导入本文讨论的所有核心文件来开发NestJS应用程序。也可以通过使用某些模块来实现应用程序,例如添加课程,使用Postman进行测试,以及控制端点的流程。 |
它提供了处理查询字符串的方法。它可以用于将查询字符串转换为JSON对象,反之亦然。要使用querystring模块,您需要使用require('querystring')。方法该实用程序有四种方法。两种重要的方法如下。方法描述querystring.parse(str[, sep][, eq][,...
阅读1分钟
Node.js Web模块什么是Web服务器Web服务器是一种软件程序,它处理HTTP客户端(如Web浏览器)发送的HTTP请求,并响应Web页面。Web服务器通常会响应HTML文档以及图像、样式表和脚本。大多数...
阅读 3 分钟
什么是V8V8是由Chromium项目为Google Chrome浏览器开发的开源JavaScript引擎。它用C++编写。如今,它被用于许多项目,如Couchbase、MongoDB和Node.js。Node.js中的V8V8模块表示接口...
阅读1分钟
该模块包含获取给定主机名信息的方法。让我们看一下常用DNS函数的列表:dns.getServers() dns.setServers(servers) dns.lookup(hostname[, options], callback) dns.lookupService(address, port, callback) dns.resolve(hostname[, rrtype], callback) dns.resolve4(hostname, callback) dns.resolve6(hostname, callback) dns.resolveCname(hostname, callback) dns.resolveMx(hostname, callback) dns.resolveNs(hostname, callback) dns.resolveSoa(hostname, callback) dns.resolveSrv(hostname, callback) dns.resolvePtr(hostname, callback) dns.resolveTxt(hostname, callback) dns.reverse(ip, callback)示例1让我们看一下dns.lookup()函数的示例。文件:dns_example1.js const dns...
阅读1分钟
函数是全局函数。您不需要使用require()函数即可使用计时器函数。让我们看一下计时器函数的列表。设置计时器函数:setImmediate():用于执行setImmediate。setInterval():用于定义时间间隔。setTimeout():用于...
阅读 2 分钟
Node.js提供了获取进程信息的功能,如进程ID、架构、平台、版本、发行版、正常运行时间、CPU使用情况等。它还可以用于终止进程、设置UID、设置组、取消掩码等。process是一个全局对象,是EventEmitter的一个实例,可以访问...
阅读 2 分钟
Node.js NetNode.js提供了执行套接字编程的能力。我们可以使用Node.js中的套接字编程来创建聊天应用程序或通信客户端和服务器应用程序。Node.js net模块包含创建服务器和客户端的函数。Node.js Net示例在此示例中,我们使用两个...
阅读1分钟
(FS)在Node.js中,文件I/O是通过标准POSIX函数的简单包装器提供的。Node文件系统(fs)模块可以使用以下语法导入:语法:var fs = require("fs") Node.js FS读取文件fs模块中的每个方法都有同步和异步形式。异步方法以最后的...
阅读 3 分钟
Node.js全局对象Node.js全局对象是全局的,在所有模块中都可用。您不需要在应用程序中包含这些对象;而是可以直接使用它们。这些对象包括模块、函数、字符串和对象等。其中一些对象实际上不是...
阅读1分钟
提供了一些基本的操作系统相关实用函数。让我们看一下常用函数或方法的列表。索引方法描述1. os.arch()此方法用于获取操作系统CPU架构。2. os.cpus()此方法用于获取包含每个已安装CPU/核心信息的对象数组:型号、速度(MHz)、...
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India