@AurelienLoyer && @EmmanuelDemey
@NestJS
NestJS
Emmanuel DEMEY
@EmmanuelDemey
Consultant WEB
Aurélien LOYER
@AurelienLoyer
Software Engineer @QIMA
NestJS
You all already know NestJS or have heard of them!
Or maybe you just know Angular ?!
NestJS
overview in
~10 minutes !!
Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications
-
Node.js
-
TypeScript
-
Express or Fastify
- "Plugins": GraphQL, WebSockets, ...
- Inspired by the Angular framework
- An awesome CLI 👌
npm install -g @nestjs/cli
nest new my-nest-project
// OR
npx @nestjs/cli new my-nest-project
@nestjs/cli
@nestjs/cli new app
@nestjs/cli new app
@nestjs/cli --help
@nestjs Project Structure
.
|-- node_modules
|-- src
| |-- app.controller.ts
| |-- app.module.ts
| |-- app.service.ts
| `-- main.ts
|-- nest-cli.json
|-- package.json
|-- tsconfig.json
`-- .eslintrc.js
@nestjs main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
}
bootstrap();
-
Bootstrap our application
-
Main module definition
-
Port
-
And more...
@nestjs Controllers
import { Controller, Get } from '@nestjs/common';
@Controller('plants')
export class PlantsController {
@Get()
findAll(): string {
return 'This action returns all plants';
}
}
-
Use classes and decorators
-
Incoming requests
-
Returning responses
-
CRUD
@nestjs Providers
import { Injectable } from '@nestjs/common';
import { Plant } from './interfaces/plant.interface';
@Injectable()
export class PlantsService {
private readonly plants: Plant[] = [];
create(plant: Plant) {
this.plants.push(plant);
}
//..
}
-
Use classes and decorators
-
Point of contact with the data
-
Injected as dependency
constructor(private catsService: CatsService) {}
@nestjs Modules
import { Module } from '@nestjs/common';
import { PlantsController } from './plants.controller';
import { PlantsService } from './plants.service';
@Module({
controllers: [PlantsController],
providers: [PlantsService],
exports: [PlantsService],
})
export class PlantsModule {}
-
Use classes and decorators
-
Organize the application structure
-
Controllers / Providers / Exports
@nestjs ...
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('Request...');
next();
}
}
-
Middleware
@Get(':id')
async findOne(@Param('id', ParseIntPipe) id: number) {
return this.catsService.findOne(id);
}
-
Pipes
-
Pipes
-
Guards
-
Interceptors
-
...
👨🏻💻 Live Coding Session!
Gardener!
NestJS - Level up !
By Aurelien Loyer
NestJS - Level up !
- 871