O que é NestJS e por que usá-lo?
NestJS é um framework progressivo para criar aplicações server-side eficientes, robustas e escaláveis em Node.js. Ele utiliza uma arquitetura expressiva inspirada no Angular e é construído sobre TypeScript por padrão, mas oferece suporte total ao JavaScript puro. O NestJS abstrai os detalhes de baixo nível de bibliotecas populares como Express (padrão) ou Fastify, fornecendo ao desenvolvedor um conjunto poderoso de ferramentas para organizar o código: módulos, controladores, serviços, provedores, middlewares, guards, interceptors, pipes e filters.
Por que usar NestJS? No desenvolvimento web moderno com Node.js, a organização do código costuma ser um problema: scripts simples em Express rapidamente se transformam em "espaguete" à medida que a funcionalidade cresce. O NestJS resolve isso impondo uma estrutura modular clara e princípios de injeção de dependência (Dependency Injection). Isso facilita os testes, a manutenção e a escalabilidade da aplicação. O framework é ideal para criar REST APIs, servidores GraphQL, microsserviços e aplicações em tempo real (WebSockets).
A principal vantagem do NestJS é seu ecossistema. Ele oferece módulos oficiais para trabalhar com bancos de dados (TypeORM, Mongoose, Prisma), autenticação (Passport), validação (class-validator), configuração, filas (Bull), cache e muito mais. Graças a isso, o desenvolvedor pode focar na lógica de negócio, em vez de integrar bibliotecas heterogêneas.
Instalação
Para instalar o NestJS, utiliza-se o gerenciador de pacotes npm (ou yarn). Recomenda-se instalar globalmente a ferramenta CLI para criar projetos rapidamente:
npm install -g @nestjs/cli
Após instalar o CLI, você pode criar um novo projeto com o comando:
nest new meu-projeto-nest
Durante a instalação, você escolherá o gerenciador de pacotes (npm, yarn ou pnpm) e a linguagem (TypeScript — recomendado, ou JavaScript). Se quiser adicionar NestJS a um projeto existente, instale os pacotes principais:
npm install @nestjs/core @nestjs/common @nestjs/platform-express reflect-metadata rxjs
Observação: a biblioteca reflect-metadata é obrigatória para o funcionamento dos decoradores.
Início rápido: exemplo mínimo funcional
Vamos criar uma REST API simples com um endpoint que retorna "Hello World".
Passo 1: Crie o arquivo app.controller.js
// app.controller.js
const { Controller, Get } = require('@nestjs/common');
@Controller()
export class AppController {
@Get()
getHello() {
return 'Hello World!';
}
}
Passo 2: Crie o arquivo app.module.js
// app.module.js
const { Module } = require('@nestjs/common');
const { AppController } = require('./app.controller');
@Module({
controllers: [AppController],
})
export class AppModule {}
Passo 3: Crie o arquivo principal main.js
// main.js
const { NestFactory } = require('@nestjs/core');
const { AppModule } = require('./app.module');
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3000);
console.log('Servidor rodando em http://localhost:3000');
}
bootstrap();
Passo 4: Execute a aplicação
node main.js
Agora acesse http://localhost:3000 — você verá "Hello World!".
Principais métodos, classes e decoradores
Abaixo estão 8 elementos-chave do NestJS com assinaturas, descrição e exemplos em JavaSc
Também na biblioteca
Trabalho com imagens em Java: da leitura ao processamento
TBB (Intel Threading Building Blocks) para C++: guia completo com exemplos
Jackson para Java: guia completo com exemplos
Envio de email em Kotlin: bibliotecas, exemplos e configuração SMTP