Visão Geral do Node.js
Node.js é um ambiente de execução JavaScript open-source, baseado no motor V8 do Google Chrome, que permite executar código JavaScript fora do navegador. Graças ao seu modelo orientado a eventos e I/O não bloqueante, é possível criar aplicações de rede escaláveis e de alta performance, como APIs REST, aplicações em tempo real e ferramentas de linha de comando.
Estrutura do Projeto
Antes de começar, verifique se o Node.js está instalado executando o comando abaixo no terminal:
node --version
Caso a versão seja exibida, prossiga criando o diretório do projeto:
mkdir sistema-web-node
cd sistema-web-node
Inicialize o projeto com as configurações padrão:
npm init -y
Em seguida, instale o Express, framework minimalista para construção de servidores HTTP:
npm install express
Criando o Servidor HTTP
Na raiz do projeto, crie um arquivo chamado server.js com o segunite conteúdo:
const express = require('express');
const api = express();
const porta = 8080;
api.get('/', (requisicao, resposta) => {
resposta.send('API funcionando corretamente');
});
api.listen(porta, () => {
console.log(`Servidor acessível em http://localhost:${porta}`);
});
Esse trecho configura uma rota raiz que responde com uma mensagem simples. Para executar:
node server.js
Acesse http://localhost:8080 no navegador para confirmar que o servidor está ativo.
Exibindo uma Interfcae Estática
Para servir uma página HTML como frontend, crie uma pasta chamada static na raiz do projeto. Dentro dela, adicione o arquivo index.html:
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sistema Web Node</title>
</head>
<body>
<h1>Bem-vindo à aplicação</h1>
<p>Esta página é servida diretamente pelo Express.</p>
</body>
</html>
Configure o middleware de arquivos estáticos no server.js, logo após a criação da instância do Express:
api.use(express.static('static'));
A partir de agora, ao acessar a raiz do servidor, o Express entregará o conteúdo do arquivo static/index.html automaticamente.
Integração com MongoDB via Mongoose
Para persistir dados, utilizaremos o MongoDB como banco de dados NoSQL e o Mongoose como biblioteca de modelagem. Certifique-se de que o MongoDB esteja em execução localmente e instale a dependência:
npm install mongoose
No arquivo server.js, adicione a configuração de conexão:
const mongoose = require('mongoose');
const uriMongo = 'mongodb://127.0.0.1:27017/sistemaWebDB';
mongoose.connect(uriMongo)
.then(() => console.log('Conexão com MongoDB estabelecida'))
.catch((erro) => console.error('Erro ao conectar:', erro));
Definindo o Modelo de Dados
Crie uma pasta models e, dentro dela, o arquivo cliente.js:
const mongoose = require('mongoose');
const EsquemaCliente = new mongoose.Schema({
nome: { type: String, required: true },
email: { type: String, required: true },
cadastradoEm: { type: Date, default: Date.now }
});
module.exports = mongoose.model('Cliente', EsquemaCliente);
Registrando Dados por uma Rota
Importe o modelo no server.js e crie uma rota para inserir um novo registro:
const Cliente = require('./models/cliente');
api.get('/cadastrar-cliente', async (requisicao, resposta) => {
try {
const novoCliente = new Cliente({
nome: 'Ana Silva',
email: 'ana.silva@empresa.com'
});
await novoCliente.save();
resposta.send('Cliente cadastrado com sucesso');
} catch (erro) {
resposta.status(500).send('Falha ao cadastrar cliente');
}
});
Reinicie o servidor com node server.js e acesse http://localhost:8080/cadastrar-cliente. Se tudo estiver configurado, uma nova entrada será salva no banco de dados e a mensagem de sucesso será exibida.
Observações sobre Produção
O exemplo acima é intencionalmente básico. Em ambientes reais, recomenda-se utilizar requisições POST para criação de recursos, validar entradas do usuário, tratar erros de forma granular, armazenar credenciais de forma segura com hash e utilizar variáveis de ambiente para dados sensíveis, como a URI do banco de dados.