深入理解 Nest.js:构建现代 Node.js 应用的完整入门指南

Node.js 是一种非常流行的服务器端运行环境,而 Nest.js 是一个建立在 Node.js 之上的框架,它提供了一种强大且可扩展的方式来构建现代 Web 应用程序。本文将深入介绍 Nest.js,向您展示如何使用它构建功能强大的应用程序。我们将探讨 Nest.js 的基本概念,包括模块、控制器、服务、中间件和数据验证。

准备工作

首先,确保您已经安装了 Node.js 和 npm。然后,使用以下命令来全局安装 Nest.js CLI:

bash 复制代码
npm install -g @nestjs/cli

现在,您已经准备好开始使用 Nest.js 来构建应用程序。

创建一个 Nest.js 项目

使用 Nest.js CLI,您可以轻松创建一个新的 Nest.js 项目。在您选择的项目目录中,运行以下命令:

bash 复制代码
nest new my-nest-app

这将创建一个名为 my-nest-app 的新项目,并自动安装所需的依赖项。项目结构将如下所示:

css 复制代码
my-nest-app/
  ├── src/
  │   ├── app.controller.ts
  │   ├── app.module.ts
  │   ├── app.service.ts
  │   └── main.ts
  ├── test/
  ├── node_modules/
  ├── package.json
  └── tsconfig.json

创建一个控制器

在 Nest.js 中,控制器用于处理传入的请求,并返回响应。首先,让我们创建一个控制器来处理一个简单的 "Hello World" 请求。在 src/ 目录中,创建一个新的控制器文件 hello.controller.ts

typescript 复制代码
import { Controller, Get } from '@nestjs/common';

@Controller('hello')
export class HelloController {
  @Get()
  getHello(): string {
    return 'Hello, Nest.js!';
  }
}

在上面的代码中,我们创建了一个名为 HelloController 的控制器,并使用 @Controller('hello') 装饰器指定了路由前缀。然后,我们创建了一个处理 HTTP GET 请求的方法 getHello,它返回一个简单的字符串。

创建一个服务

服务是用于处理业务逻辑的组件。让我们创建一个简单的服务来向控制器提供数据。在 src/ 目录中,创建一个新的服务文件 hello.service.ts

typescript 复制代码
import { Injectable } from '@nestjs/common';

@Injectable()
export class HelloService {
  getHelloMessage(): string {
    return 'Hello, Nest.js!';
  }
}

在上面的代码中,我们创建了一个名为 HelloService 的服务,它具有一个方法 getHelloMessage,用于返回 "Hello, Nest.js!"。

注册控制器和服务

要使用控制器和服务,我们需要将它们注册到 Nest.js 应用中。打开 src/app.module.ts 文件,并添加以下代码:

typescript 复制代码
import { Module } from '@nestjs/common';
import { HelloController } from './hello.controller';
import { HelloService } from './hello.service';

@Module({
  controllers: [HelloController],
  providers: [HelloService],
})
export class AppModule {}

在上面的代码中,我们导入了 HelloControllerHelloService,然后将它们添加到 controllersproviders 数组中。这将告诉 Nest.js 如何将它们连接起来。

创建一个 Nest.js 应用

最后,我们需要创建一个 Nest.js 应用并将其监听在特定的端口。在 src/main.ts 文件中,添加以下代码:

typescript 复制代码
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}

bootstrap();

上述代码使用 NestFactory 创建了一个 Nest.js 应用,并指定了要使用的模块 AppModule。然后,应用被配置为监听端口 3000

运行应用

现在,您的 Nest.js 应用已准备就绪。在项目根目录中,运行以下命令来启动应用:

bash 复制代码
npm run start

您的 Nest.js 应用将在端口 3000 上运行。在浏览器中访问 http://localhost:3000/hello,您将看到 "Hello, Nest.js!" 的响应。

这只是 Nest.js 的入门,它提供了很多其他功能,如路由保护、拦截器、数据验证和数据库集成。希望这篇文章对您入门 Nest.js 有所帮助,以便您能够构建更复杂和功能强大的应用程序。

相关推荐
Spirited_Away3 天前
Nest世界中的AOP
前端·node.js·nestjs
Eric_见嘉10 天前
NestJS 🧑‍🍳 厨子必修课(六):Prisma 集成(下)
前端·后端·nestjs
kongxx1 个月前
NestJS中使用Guard实现路由保护
nestjs
白雾茫茫丶1 个月前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
nestjs·nest.js·发布订阅·event emitter
lph65822 个月前
比起上传资源更应该懂得如何资源回收
node.js·nestjs
gsls2008082 个月前
将nestjs项目迁移到阿里云函数
阿里云·云计算·nestjs·云函数
d3126975102 个月前
在Nestjs使用mysql和typeorm
mysql·express·nestjs·typeorm
剪刀石头布啊2 个月前
nestjs-版本控制
nestjs
潇洒哥gg3 个月前
重生之我在NestJS中使用jwt鉴权
前端·javascript·nestjs
huangkaihao3 个月前
【NestJS学习笔记】 之 自定义装饰器
前端·node.js·nestjs