前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >NestJS 从拔高到精通,大型复杂业务架构落地实战|果fx

NestJS 从拔高到精通,大型复杂业务架构落地实战|果fx

原创
作者头像
baikeu电抗
发布2024-12-19 12:56:31
发布2024-12-19 12:56:31
2530
举报

简单实战NestJS在大型复杂业务的模块化设计和微服务治理。

1. 创建NestJS项目

首先,确保你已经安装了Nest CLI。然后创建一个新的NestJS项目:

代码语言:txt
复制
npm i -g @nestjs/cli
nest new my-nest-project

2. 模块化设计

在NestJS中,模块是组织代码的基本单位。我们可以创建多个模块来管理不同的业务逻辑。

创建用户模块
代码语言:txt
复制
nest generate module users
nest generate service users
nest generate controller users
users.module.ts
代码语言:txt
复制
import { Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';

@Module({
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}
users.service.ts
代码语言:txt
复制
import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  private users = [];

  create(user) {
    this.users.push(user);
    return user;
  }

  findAll() {
    return this.users;
  }
}
users.controller.ts
代码语言:txt
复制
import { Controller, Get, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';

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

  @Post()
  create(@Body() user) {
    return this.usersService.create(user);
  }

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

3. 微服务治理

NestJS支持多种微服务架构。我们可以使用TCP、Redis、NATS等作为微服务的传输层。

创建微服务模块
代码语言:txt
复制
nest generate module microservice
microservice.module.ts
代码语言:txt
复制
import { Module } from '@nestjs/common';
import { MicroserviceService } from './microservice.service';

@Module({
  providers: [MicroserviceService],
})
export class MicroserviceModule {}
microservice.service.ts
代码语言:txt
复制
import { Injectable } from '@nestjs/common';
import { ClientProxy, ClientProxyFactory, Transport } from '@nestjs/microservices';

@Injectable()
export class MicroserviceService {
  private client: ClientProxy;

  constructor() {
    this.client = ClientProxyFactory.create({
      transport: Transport.TCP,
      options: {
        host: 'localhost',
        port: 3001,
      },
    });
  }

  sendMessage(pattern: string, data: any) {
    return this.client.send(pattern, data);
  }
}

4. 启动微服务

在主应用程序中启动微服务:

main.ts
代码语言:txt
复制
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { MicroserviceOptions, Transport } from '@nestjs/microservices';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
 const microservice = app.connectMicroservice<MicroserviceOptions>({
    transport: Transport.TCP,
    options: {
      host: 'localhost',
      port: 3001,
    },
  });

  await app.startAllMicroservices();
  await app.listen(3000);
}
bootstrap();

完毕

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 创建NestJS项目
  • 2. 模块化设计
    • 创建用户模块
    • users.module.ts
    • users.service.ts
    • users.controller.ts
  • 3. 微服务治理
    • 创建微服务模块
    • microservice.module.ts
    • microservice.service.ts
  • 4. 启动微服务
    • main.ts
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档