Criar um servidor Node.js do zero pode parecer uma tarefa desafiadora para iniciantes, mas com as ferramentas e conceitos certos, o processo se torna relativamente simples. Este guia prático o ajudará a configurar seu servidor Node.js desde a instalação até a criação de um servidor básico, com exemplos claros e explicações detalhadas.
1. O que é Node.js e por que usá-lo?
Node.js é uma plataforma JavaScript construída sobre o motor V8 do Chrome. Ele permite que os desenvolvedores criem aplicações de servidor altamente escaláveis, utilizando JavaScript no lado do servidor. As vantagens incluem:
- Alta performance: Processa requisições de forma assíncrona.
- Facilidade de aprendizado: Desenvolvedores que já conhecem JavaScript podem expandir suas habilidades para o backend.
- Ecossistema vasto: Com o gerenciador de pacotes npm, é possível adicionar bibliotecas e frameworks facilmente.
2. Pré-requisitos
Antes de começar, certifique-se de ter:
- Node.js instalado: Visite o site oficial do Node.js para baixar e instalar a versão LTS recomendada.
- Editor de texto ou IDE: Recomendamos o Visual Studio Code pela sua simplicidade e integração com Node.js.
- Terminal configurado: No Windows, você pode usar o PowerShell ou o terminal do VS Code. Em macOS e Linux, o Terminal padrão é suficiente.
3. Instalando Node.js
- Baixando o Node.js: Acesse o site oficial, baixe o instalador apropriado para seu sistema operacional e siga as instruções de instalação.
- Verificando a instalação: Após a instalação, abra o terminal e digite:
node -v npm -vEstes comandos retornarão as versões instaladas do Node.js e do npm (Node Package Manager).
4. Criando um projeto Node.js
- Crie uma pasta para o projeto: No terminal, digite:
mkdir meu-servidor-node cd meu-servidor-node - Inicialize o projeto: Execute o seguinte comando:
npm init -yIsso criará um arquivopackage.jsoncom as configurações padrão. - Instale pacotes necessários (opcional): Durante este tutorial, utilizaremos o pacote
nodemonpara reiniciar automaticamente o servidor em caso de alterações:npm install --save-dev nodemon
5. Configurando seu servidor básico
- Crie o arquivo principal: No diretório do projeto, crie um arquivo chamado
server.js:touch server.js - Escrevendo o código básico: Abra o
server.jsno editor de texto e adicione o seguinte código:const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Olá, mundo!'); }); server.listen(port, hostname, () => { console.log(`Servidor rodando em http://${hostname}:${port}/`); }); - Executando o servidor: No terminal, execute:
node server.jsAbra o navegador e acessehttp://127.0.0.1:3000. Você verá a mensagem “Olá, mundo!”.
6. Estruturando o projeto
Conforme o projeto cresce, é essencial organizar os arquivos para facilitar a manutenção. Aqui está uma estrutura básica recomendada:
meu-servidor-node/
├── server.js
├── routes/
│ └── index.js
├── controllers/
│ └── mainController.js
├── models/
├── public/
│ ├── css/
│ ├── js/
│ └── images/
├── views/
│ └── index.html
├── package.json
└── README.md
routes/: Define as rotas do aplicativo.controllers/: Lógica de negócios separada.models/: Interação com banco de dados.public/: Arquivos estáticos (CSS, JavaScript, imagens).views/: Arquivos HTML.
7. Trabalhando com frameworks: Express
Para projetos mais complexos, o framework Express.js simplifica o desenvolvimento. Vamos adicionar o Express ao projeto.
- Instale o Express:
npm install express - Atualize o
server.js:const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Olá, mundo com Express!'); }); app.listen(port, () => { console.log(`Servidor rodando em http://localhost:${port}/`); }); - Execute o servidor:
node server.js
Agora, acessar http://localhost:3000 exibirá a mensagem “Olá, mundo com Express!”.
8. Configurando um middleware básico
Middlewares são funções executadas durante o ciclo de requisição e resposta. Um exemplo de middleware para registrar requisições:
app.use((req, res, next) => {
console.log(`Requisição recebida: ${req.method} ${req.url}`);
next();
});
Adicione essa função antes das rotas para registrar cada requisição no console.
9. Trabalhando com arquivos estáticos
Para servir arquivos como CSS, JavaScript ou imagens, utilize o middleware express.static:
- Crie a pasta
public: No diretório do projeto:mkdir public - Atualize o
server.js:app.use(express.static('public')); - Adicione um arquivo estático: Crie
public/style.css:body { background-color: #f0f0f0; font-family: Arial, sans-serif; }
Inclua esse CSS no HTML e verifique no navegador.
10. Conexão com banco de dados
Se você planeja adicionar um banco de dados, considere usar um ORM como Sequelize para SQL ou Mongoose para MongoDB.
Exemplo básico com Mongoose:
- Instale o Mongoose:
npm install mongoose - Conecte ao MongoDB: Adicione ao
server.js:const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/meuBanco', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Conectado ao MongoDB!')) .catch(err => console.error('Erro ao conectar ao MongoDB:', err));
11. Preparando para produção
Antes de colocar o servidor em produção, siga estas etapas:
- Variáveis de ambiente: Use o pacote
dotenvpara gerenciar configurações sensíveis. - Logs: Adicione uma solução robusta de logs como
winston. - Segurança: Instale o pacote
helmetpara proteger o servidor de vulnerabilidades.
12. Testando e depurando
Teste o servidor regularmente com ferramentas como Postman ou Insomnia. Utilize console.log para depurar o código ou o debugger integrado do Node.js.
Conclusão
Parabéns! Você configurou um servidor Node.js funcional, estruturado e preparado para crescer. Node.js é uma plataforma poderosa e flexível, e com a prática, você poderá criar APIs robustas, sistemas em tempo real e muito mais. Continue explorando, aprendendo e experimentando com as possibilidades que Node.js oferece.
Se gostou do conteúdo, compartilhe com outros desenvolvedores e continue acompanhando nosso blog para mais dicas e tutoriais!