简单实战NestJS在大型复杂业务的模块化设计和微服务治理。
首先,确保你已经安装了Nest CLI。然后创建一个新的NestJS项目:
npm i -g @nestjs/cli
nest new my-nest-project
在NestJS中,模块是组织代码的基本单位。我们可以创建多个模块来管理不同的业务逻辑。
nest generate module users
nest generate service users
nest generate controller users
users.module.ts
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
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
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();
}
}
NestJS支持多种微服务架构。我们可以使用TCP、Redis、NATS等作为微服务的传输层。
nest generate module microservice
microservice.module.ts
import { Module } from '@nestjs/common';
import { MicroserviceService } from './microservice.service';
@Module({
providers: [MicroserviceService],
})
export class MicroserviceModule {}
microservice.service.ts
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);
}
}
在主应用程序中启动微服务:
main.ts
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 删除。