Backend
Node.js
Runtime JavaScript para desenvolvimento backend na IngenioLab
O que é Node.js?
Node.js é um ambiente de execução JavaScript construído no motor V8 do Chrome. Permite executar JavaScript no servidor, oferecendo alta performance e escalabilidade através de seu modelo de I/O não-bloqueante baseado em eventos.
Por que utilizamos Node.js na IngenioLab?
- Performance: Excelente para aplicações I/O intensivas
- Ecossistema rico: NPM com milhões de pacotes disponíveis
- JavaScript full-stack: Mesma linguagem no frontend e backend
- Comunidade ativa: Grande suporte da comunidade
- Escalabilidade: Ideal para aplicações em tempo real
Padrão IngenioLab: Versão LTS
SEMPRE utilize a versão LTS (Long Term Support) do Node.js
Verificar versão atual:
node --versionnpm --version
Como instalar/atualizar para versão LTS:
Usando Node Version Manager (NVM) - Recomendado:
# Instalar NVM (Linux/macOS)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash# Instalar última versão LTSnvm install --ltsnvm use --ltsnvm alias default lts/*
Download direto:
Baixe a versão LTS em: https://nodejs.org/
Iniciando um novo projeto Node.js
1. Criar estrutura do projeto:
mkdir meu-projetocd meu-projetonpm init -y
2. Estrutura de pastas recomendada:
meu-projeto/├── src/│ ├── controllers/│ ├── models/│ ├── routes/│ ├── middleware/│ └── utils/├── tests/├── docs/├── package.json├── .gitignore└── README.md
3. Configurações essenciais no package.json:
{"name": "meu-projeto","version": "1.0.0","type": "module","main": "src/index.js","scripts": {"start": "node src/index.js","dev": "nodemon src/index.js","test": "jest"},"engines": {"node": ">=18.0.0"}}
Padrões de Código IngenioLab
1. Sempre usar ES Modules:
// ✅ Corretoimport fastify from 'fastify'import { readFile } from 'fs/promises'// ❌ Evitarconst fastify = require('fastify')
2. Tratamento de erros assíncronos:
// ✅ Corretotry {const data = await fetchData()return data} catch (error) {console.error('Erro ao buscar dados:', error)throw error}
3. Variáveis de ambiente:
// .envPORT=3000DB_URL=mongodb://localhost:27017/mydb// src/config/env.jsimport 'dotenv/config'export const config = {port: process.env.PORT || 3000,dbUrl: process.env.DB_URL}
4. Estrutura de API REST:
// src/routes/users.jsimport { FastifyInstance } from 'fastify'export default async function userRoutes(fastify) {fastify.get('/', getAllUsers)fastify.get('/:id', getUserById)fastify.post('/', createUser)fastify.put('/:id', updateUser)fastify.delete('/:id', deleteUser)}
Dependências Essenciais
Para desenvolvimento:
npm install -D nodemon jest eslint prettier
Para APIs:
npm install fastify @fastify/helmet @fastify/cors
Para banco de dados:
npm install mongoose # MongoDBnpm install pg # PostgreSQL