Node.
js
Mini Resumo
O que é Node.js
Node.js é um ambiente de execução JavaScript do lado do servidor, construído sobre o motor V8 do
Google Chrome. Permite executar código JavaScript fora do navegador, criando aplicações de rede
rápidas e escaláveis.
Características Principais
1. Assíncrono e Orientado a Eventos: Operações não bloqueantes através de callbacks, promessas e
async/await.
2. Modelo de I/O sem bloqueio: Ideal para aplicações com muitas operações de entrada/saída.
3. Única thread com loop de eventos: Gerencia múltiplas conexões simultaneamente sem criar novas
threads.
4. NPM (Node Package Manager): Enorme ecossistema de pacotes reutilizáveis.
5. Cross-platform: Funciona em Windows, macOS e Linux.
Casos de Uso Comuns
APIs RESTful
Aplicações em tempo real (chat, jogos)
Ferramentas de linha de comando
Microsserviços
Streaming de dados
Exemplo Básico
javascript
// Criando um servidor HTTP simples
const http = require('http');
const servidor = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Olá Mundo!');
});
servidor.listen(3000, () => {
console.log('Servidor rodando em http://localhost:3000/');
});
Estrutura Típica de Projeto
projeto/
├── node_modules/ // Pacotes instalados
├── src/ // Código fonte
│ ├── controllers/ // Controladores
│ ├── models/ // Modelos de dados
│ ├── routes/ // Rotas da API
│ └── index.js // Ponto de entrada
├── tests/ // Testes
├── .env // Variáveis de ambiente
├── .gitignore // Arquivos ignorados pelo git
├── package.json // Dependências e scripts
└── README.md // Documentação
Frameworks Populares
Express.js: Framework web minimalista
NestJS: Framework estruturado inspirado no Angular
Fastify: Alternativa de alta performance ao Express
Koa: Criado pela equipe do Express, mais leve
Gerenciamento de Pacotes
bash
# Iniciar novo projeto
npm init
# Instalar pacote
npm install express
# Instalar pacote de desenvolvimento
npm install --save-dev jest
# Executar script definido no package.json
npm run start
Conceitos Avançados
Event Loop: Mecanismo que permite I/O não-bloqueante
Módulos: Sistema de organização de código (CommonJS e ES Modules)
Streams: Processamento de dados por partes
Buffers: Manipulação de dados binários
Worker Threads: Processamento paralelo para tarefas intensivas em CPU
Cluster: Aproveitamento de múltiplos núcleos do processador
Vantagens
Mesma linguagem no frontend e backend (JavaScript/TypeScript)
Alta performance para operações I/O
Grande ecossistema de pacotes
Comunidade ativa e bem estabelecida
Ótimo para prototipagem rápida e APIs
Desvantagens
Não ideal para processamento intensivo de CPU
Callbacks podem levar a "callback hell" (resolvido com Promises/async-await)
Mudanças frequentes no ecossistema
Conclusão
Node.js revolucionou o desenvolvimento backend ao permitir que desenvolvedores JavaScript
construam aplicações completas de servidor. Seu modelo assíncrono e orientado a eventos é
particularmente eficaz para aplicações escaláveis com muitas operações de I/O simultâneas.