nestjs基础概念

q1871901600 发布于 2024-11-12 39 次阅读


Nest 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的框架。

Nest 还非常适合应用 N 层架构,旨在将应用程序划分为逻辑层。层是一种分离职责和管理依赖关系以实现关注点分离 (SoC) 原则的方法。为了实现这一目标,Nest 建议调用控制器内的服务层,并在这些服务层内执行所有业务逻辑。对于服务层,调用另一个层称为存储库层,该层负责数据访问。因此,我们将我们的关注点分为三层。分离这些层可以为软件提供可重用性和可维护性。它还使我们的应用程序易于测试,

我们创建的cat路由,它可能看起来像这样:

CatController -> CatService -> CatRepository

cats.controller.ts 文件内容

import { Controller, Get, Post } from '@nestjs/common';
import { CatService } from './cat.service';

@Controller('cat')
export class CatController {
constructor(private readonly catService: CatService) {}

  @Get()
  getCats() {
    return this.catService.findAll();
  }
  @Post('create')
  create() {
    return 'Create New Cat!';
  }
}

在 Nest 中,可以通过在要注入的模块顶部添加 Injectable 装饰器来使用依赖注入
cats.service.ts 文件内容
import { Injectable } from '@nestjs/common';
@Injectable()
export class CatService {
  findAll() {
    return 'Hello World';
  }
  create() {
    return 'Create New Cat!';
  }
}

项目目录结构
project-root/
│
├── src/
│   ├── app.module.ts             // 应用程序的主模块
│   └── cats/                    // Cats模块的目录
│       ├── cats.controller.ts    // Cats控制器
│       ├── cats.module.ts        // Cats模块
│       ├── cats.service.ts       // Cats服务
│       └── dto/                  // 数据传输对象目录
│           ├── create-cat.dto.ts // 创建Cat的DTO
│           └── update-cat.dto.ts // 更新Cat的DTO
│
├── test/                         // 测试目录(可选)
│   ├── cats/                     // Cats模块的测试
│   │   ├── cats.controller.spec.ts
│   │   └── cats.service.spec.ts
│   └── app.e2e-spec.ts           // 端到端测试
│
├── .gitignore                    // Git忽略文件配置
├── nest-cli.json                 // Nest CLI配置文件
├── package.json                  // Node.js项目的配置文件
├── README.md                     // 项目说明文件
├── tsconfig.json                 // TypeScript配置文件
└── ...

参考文章:

理论篇:关注点分离(Separation of concerns, SoC) - Java/Python - 博客园

Express.js 与 Nest.js对比_express nestjs-CSDN博客

一个会写python的Java工程师
最后更新于 2024-11-12