全栈之路- Nest入门

2,317 阅读2分钟

全栈之路- Nest入门

Nest 是一款基于 TypeScript 的渐进式 Node.js 框架,它提供了一种结构清晰、可扩展且易于维护的方式来构建服务器端应用程序。对于前端工程师来说,学习 Nest 是进阶成为全栈开发者的重要一步。本文将为你提供一个简单的入门指南,帮助你开始学习 Nest,并展示一些基础使用和注意事项。

安装 Nest

首先,我们需要安装 Node.js 和 npm(或者使用 yarn)。打开终端并执行以下命令:

shellCopy code
npm install -g @nestjs/cli

这将全局安装 Nest CLI,它将帮助我们创建和管理 Nest 项目。

创建 Nest 项目

在你选择的项目目录中,执行以下命令创建一个新的 Nest 项目:

shellCopy code
nest new my-nest-app

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

第一个 CURD

创建curd可以使用以下命令一步创建完毕

nest g resource cats

将直接生成如下一套curd文件 image.png

分步创建 CURD

创建第一个Controller

在项目根目录下,执行以下命令创建一个控制器:

nest generate controller cats

这将在 src 目录下创建一个名为 cats.controller.ts 的文件。打开它并用以下代码替换:

import { Controller, Get, Post, Body } from '@nestjs/common';
import { CatsService } from './cats.service';
import { CreateCatDto } from './dto/create-cat.dto';

@Controller('cats')
export class CatsController {
  constructor(private readonly catsService: CatsService) {}

  @Get()
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }

  @Post()
  async create(@Body() createCatDto: CreateCatDto): Promise<Cat> {
    return this.catsService.create(createCatDto);
  }
}

创建 Service

执行以下命令创建一个服务:

nest generate service cats

这将在 src 目录下创建一个名为 cats.service.ts 的文件。打开它并用以下代码替换:

import { Injectable } from '@nestjs/common';
import { Cat } from './interfaces/cat.interface';
import { CreateCatDto } from './dto/create-cat.dto';

@Injectable()
export class CatsService {
  private readonly cats: Cat[] = [];

  findAll(): Promise<Cat[]> {
    return Promise.resolve(this.cats);
  }

  create(createCatDto: CreateCatDto): Promise<Cat> {
    const cat: Cat = {
      id: Date.now().toString(),
      name: createCatDto.name,
      age: createCatDto.age,
    };
    this.cats.push(cat);
    return Promise.resolve(cat);
  }
}

创建 Module

执行以下命令创建一个模块:

nest generate module cats

这将在 src 目录下创建一个名为 cats.module.ts 的文件。打开它并用以下代码替换:

import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule {}

创建 DTO

创建一个 DTO(数据传输对象)用于定义传入请求的数据结构。执行以下命令创建一个 DTO:

touch src/cats/dto/create-cat.dto.ts

打开 create-cat.dto.ts 文件并添加以下代码:

export class CreateCatDto {
  name: string;
  age: number;
}

创建 Entity

执行以下命令创建一个实体:

nest generate module cats/entities

注册 Module

要使用我们创建的 CatsModule,我们需要将其注册到应用程序中。打开 app.module.ts 文件,修改代码如下:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { CatsModule } from './cats/cats.module';

@Module({
  imports: [CatsModule],
  controllers: [AppController],
  providers: [],
})
export class AppModule {}

启动应用程序

现在,我们可以启动我们的 Nest 应用程序并查看结果了