返回

在 Nest.js 中书写 JavaScript 的简单指南

前端

Nest.js 初探:踏上 Node.js 服务器框架实践之路
随着 Typescript 基础的掌握,我们迫不及待地踏上实践之旅。Nest.js 作为一款颇受欢迎的 Node.js 服务器框架,将陪伴我们探索服务器端开发的奥秘。

初识 Nest.js

Nest.js 是一个为 TypeScript 而设计的 Node.js 框架,它遵循流行的模型-视图-控制器 (MVC) 架构。它提供了一系列强大的功能,使开发人员能够创建可扩展、可测试和可维护的应用程序。

安装 Nest.js

要安装 Nest.js,请运行以下命令:

npm install -g @nestjs/cli
nest new my-nest-app

创建一个控制器

控制器处理客户端请求并协调应用程序的业务逻辑。在 Nest.js 中,控制器由带 @Controller 装饰器的类定义。例如,以下控制器负责处理用户:

import { Controller, Get, Post, Body } from '@nestjs/common';

@Controller('users')
export class UsersController {
  @Get()
  findAll() {
    // ...
  }

  @Post()
  create(@Body() userDto: UserDto) {
    // ...
  }
}

创建服务

服务层负责应用程序的业务逻辑。它们被控制器注入并用于执行特定的任务。例如,以下服务负责处理用户数据库操作:

import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  findAll() {
    // ...
  }

  create(userDto: UserDto) {
    // ...
  }
}

依赖注入

Nest.js 提供了依赖注入机制,使你可以轻松访问服务和存储库。通过在控制器或服务构造函数中使用 @Inject 装饰器,你可以注入所需的依赖项。例如:

import { Controller, Get, Inject } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(@Inject(UsersService) private usersService: UsersService) {}

  @Get()
  findAll() {
    return this.usersService.findAll();
  }
}

路由

Nest.js 使用路由表来定义应用程序的端点。路由表在 main.ts 文件中定义,它告诉框架如何将请求映射到控制器和方法。例如:

import { Controller, Get } from '@nestjs/common';
import { AppController } from './app.controller';
import { UsersController } from './users.controller';

@Controller()
export class AppController {
  constructor() {}

  @Get()
  root(): string {
    return 'Hello World!';
  }
}

测试

Nest.js 提供了全面的测试套件,使你能够轻松测试应用程序。测试文件通常放置在 test 目录中,它们使用 NestJS Test Framework 进行编写。例如:

import { Test, TestingModule } from '@nestjs/testing';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';

describe('UsersController', () => {
  let controller: UsersController;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      controllers: [UsersController],
      providers: [UsersService],
    }).compile();

    controller = module.get<UsersController>(UsersController);
  });

  it('should be defined', () => {
    expect(controller).toBeDefined();
  });
});

结论

Nest.js 是一个强大的 Node.js 框架,它使开发人员能够轻松创建可扩展、可测试和可维护的应用程序。通过遵循本文中概述的基本步骤,你可以快速入门并开始使用 Nest.js 构建自己的应用程序。随着你对框架了解的加深,你可以探索它的高级功能,例如模块、守卫和过滤器,以创建更加复杂和健壮的应用程序。