Introdução ao NestJS
\n\nNestJS (Nest) é um framework progressivo para criar aplicações server-side eficientes, escaláveis e confiáveis em Node.js. Ele usa TypeScript como linguagem principal e é inspirado na arquitetura do Angular. O NestJS fornece uma arquitetura de aplicação pronta que ajuda desenvolvedores a criar código bem estruturado, testável e de fácil manutenção.
\n\nO principal objetivo do NestJS é resolver o problema da falta de uma arquitetura clara no ecossistema Node.js. Ao contrário do Express ou Fastify, que são minimalistas e não impõem uma estrutura, o NestJS oferece abstrações prontas: módulos, controladores, serviços, provedores e middleware. Isso é especialmente útil para grandes projetos corporativos, onde a previsibilidade e a padronização do código são importantes.
\n\nO NestJS é construído sobre frameworks HTTP (por padrão Express, mas pode usar Fastify) e adiciona a eles um poderoso sistema de injeção de dependência (Dependency Injection), decoradores, Guards, Interceptors, Pipes e Filters. O framework usa ativamente decoradores do TypeScript, tornando o código declarativo e legível.
\n\nInstalação do NestJS
\n\nPara instalar o NestJS, você precisará do Node.js (versão 16 ou superior) e de um gerenciador de pacotes npm (ou yarn, pnpm).
\n\nA maneira mais fácil de começar é usar o Nest CLI:
\n\nnpm install -g @nestjs/cli\nnest new my-nest-project\ncd my-nest-project\nnpm run start:dev\n\nSe preferir instalar o NestJS em um projeto já existente:
\n\nnpm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs typescript @types/node\n\nTambém será necessário instalar o TypeScript e o ts-node para desenvolvimento:
\n\nnpm install -D typescript @types/node ts-node\n\nImportante: o NestJS usa a biblioteca reflect-metadata para trabalhar com decoradores. Certifique-se de que ela esteja importada no arquivo principal main.ts:
import "reflect-metadata";\n\nInício rápido com exemplo de código
\n\nVamos criar uma aplicação REST API simples com um endpoint que retorna uma saudação.
\n\nEstrutura do projeto:
\nsrc/\n├── app.controller.ts\n├── app.module.ts\n├── app.service.ts\n└── main.ts\n\nmain.ts — ponto de entrada:
\nimport { NestFactory } from '@nestjs/core';\nimport { AppModule } from './app.module';\n\nasync function bootstrap() {\n const app = await NestFactory.create(AppModule);\n await app.listen(3000);\n console.log('Server is running on http://localhost:3000');\n}\nbootstrap();\n\napp.module.ts — módulo raiz:
\nimport { Module } from '@nestjs/common';\nimport { AppController } from './app.controller';\nimport { AppService } from './app.service';\n\n@Module({\n imports: [],\n controllers: [AppController],\n providers: [AppService],\n})\nexport class AppModule {}\n\napp.controller.ts — controlador:
\nimport { Controller, Get } from '@nestjs/common';\nimport { AppService } from './app.service';\n\n@Controller()\nexport class AppController {\n constructor(private readonly appService: AppService) {}\n\n @Get()\n getHello(): string {\n return this.appService.getHello();\n }\n}\n\napp.service.ts — serviço (lógica de negócios):
\nimport { Injectable } from '@nestjs/common';\n\n@Injectable()\nexport class AppService {\n getHello(): string {\n return 'Hello World!';\n }\n}\n\nExecute a aplicação com o comando npm run start:dev e abra http://localhost:3000. Você verá "Hello World!".
Principais métodos e funções do NestJS
\n\nVamos explorar 10 elementos-chave do NestJS que são usados em todos os projetos.
\n\n1. @Module() — decorador de módulo
\nO que faz: Define a cl
Também na biblioteca
Migrações de banco de dados em C++: visão geral de ferramentas e bibliotecas
Melhores bibliotecas de logging para Go (Golang): visão geral e comparação
Trabalhando com CSV em Rust: biblioteca csv e processamento de dados
Trabalhando com arquivos ZIP em C# (.NET): guia completo
Filas de tarefas em Kotlin: Coroutines, Flow e bibliotecas para processamento em segundo plano