Criando e Executando um Projeto Express.js com o ServBay
O que é Express.js?
Express.js é um framework web rápido, open-source e minimalista baseado no Node.js. Ele oferece uma variedade de recursos poderosos para construir aplicações web de página única, multipágina ou híbridas. O Express.js é um dos frameworks mais populares do ecossistema Node.js, muito apreciado pelos desenvolvedores devido ao seu design simples e flexível.
Principais características e benefícios do Express.js
- Simplicidade e flexibilidade: Express.js oferece uma API limpa e um mecanismo de middleware flexível, permitindo o desenvolvimento eficiente de aplicações web.
- Middleware: Suporta múltiplos middlewares que facilitam o processamento de requisições e respostas, como parsing do corpo, gerenciamento de sessões, fornecimento de arquivos estáticos e mais.
- Roteamento: Roteamento poderoso, permitindo tratar requisições de acordo com diferentes métodos HTTP (GET, POST, PUT, DELETE, etc.) e caminhos de URL.
- Alta integração: Integra-se sem problemas a diversos motores de template (como Pug, EJS, Handlebars), bancos de dados (como MongoDB, MySQL, PostgreSQL) e outros módulos Node.js.
- Comunidade e ecossistema: Uma grande comunidade, com vasta quantidade de middlewares e plugins de terceiros, facilita encontrar soluções e recursos quando necessário.
Com o Express.js, desenvolvedores podem criar rapidamente aplicações web e APIs de alta performance. O ServBay, como um poderoso ambiente local de desenvolvimento web, oferece um ambiente Node.js prático e recursos avançados para gerenciamento de sites (proxy reverso) e bancos de dados, facilitando a execução de projetos Express.js.
Criando e executando um projeto Express.js no ServBay
Este artigo irá guiá-lo no processo de criação, configuração e execução de um projeto Express.js utilizando o ambiente Node.js fornecido pelo ServBay. Usaremos o recurso de Sites do ServBay para configurar o servidor web e acessar o projeto via proxy reverso. Essa abordagem é especialmente indicada para aplicações em Node.js, Python, Go, Java e outras que exigem execução em portas específicas.
Pré-requisitos
Antes de começar, certifique-se de que você possui:
- ServBay instalado com sucesso no macOS.
- Pacote Node.js instalado e ativado pelo ServBay. Utilize a aba “Pacotes” no painel do ServBay para gerenciar.
- (Opcional) Se for utilizar banco de dados, certifique-se de ter instalado e ativado o(s) correspondente(s) pacote(s) de banco de dados (por exemplo, MariaDB, PostgreSQL, MongoDB, Redis, MySQL).
- Conhecimentos básicos em terminal ou linha de comando.
Criando um projeto Express.js
Inicializando o projeto
Primeiro, abra o terminal e navegue até o diretório raiz sugerido pelo ServBay,
/Applications/ServBay/www
. Depois, utilize o comandonpx express-generator
para gerar rapidamente a estrutura base do projeto Express.js. Onpx
vem incluso a partir da versão 5.2+ do npm e executa binários de pacotes Node.js.bashcd /Applications/ServBay/www npx express-generator servbay-express-app
1
2Isso criará uma nova pasta chamada
servbay-express-app
em/Applications/ServBay/www
, contendo a estrutura padrão de um projeto Express.js.Instalando as dependências do projeto
Entre no diretório recém-criado
servbay-express-app
e rodenpm install
para instalar todas as dependências necessárias, incluindo o próprio Express.js, o motor de templates e outros pacotes padrão para servir arquivos estáticos, etc.bashcd servbay-express-app npm install
1
2Aguarde até que todas as dependências sejam instaladas.
Modificando o conteúdo de saída do Express.js
Para validar que o projeto está funcionando corretamente, vamos modificar o conteúdo padrão da homepage.
Modificando o arquivo
routes/index.js
O Express.js usa arquivos de roteamento para tratar diferentes URLs. Abra o arquivo
routes/index.js
dentro do diretório do projeto. Esse arquivo trata solicitações GET no caminho raiz/
. Altere o código para, em vez de renderizar o template Pug padrão, enviar diretamente uma resposta de texto simples.javascriptvar express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { // Alterado para enviar uma resposta de texto res.send('Hello ServBay!'); }); module.exports = router;
1
2
3
4
5
6
7
8
9
10Salve o arquivo.
Entrando em modo de desenvolvimento
Durante o desenvolvimento, normalmente executamos um servidor local para visualizar as alterações em tempo real. Projetos Express.js podem ser iniciados com o comando npm start
, que executa o servidor HTTP embutido.
Executando o servidor de desenvolvimento
No diretório raiz do projeto
servbay-express-app
, execute o comando abaixo para iniciar o servidor de desenvolvimento. Defina a variável de ambientePORT
para especificar a porta — aqui, usaremos8585
. A variávelDEBUG
ativa logs de depuração.bashcd /Applications/ServBay/www/servbay-express-app PORT=8585 DEBUG=servbay-express-app:* npm start
1
2O terminal exibirá informações de inicialização do servidor, indicando que o app Express.js está ouvindo na porta
8585
.Configurando proxy reverso de site no ServBay
Como o app Express.js executa numa porta customizada (8585) em vez da padrão web (80/443), é necessário configurar um proxy reverso usando o recurso Sites do ServBay. O servidor web (por padrão, Caddy) do ServBay escuta nas portas 80/443 e redireciona requisições do domínio escolhido para o app Express.js em
127.0.0.1:8585
.No painel do ServBay, vá até a aba “Sites” e clique para adicionar um novo site. Preencha as configurações assim:
- Nome:
My first Express.js dev site
(um nome fácil de identificar) - Domínio:
servbay-express-test.servbay.demo
(domínios.servbay.demo
aproveitam a CA do usuário do ServBay para HTTPS automático) - Tipo de Site: Escolha
Proxy Reverso
- IP:
127.0.0.1
(oulocalhost
) - Porta:
8585
(porta usada pelo app Express.js)
Após configurar, salve e aplique as alterações do ServBay, que automaticamente irá configurar o servidor web e gerar os certificados SSL (para domínios
.servbay.demo
).Para um passo a passo detalhado, consulte o guia sobre adicionar sites de desenvolvimento Node.js na documentação do ServBay.
- Nome:
Acessando o site em modo de desenvolvimento
Abra o navegador e acesse o domínio configurado:
https://servbay-express-test.servbay.demo
. O servidor web do ServBay receberá a requisição e, através do proxy reverso, a encaminhará para o app Express.js rodando na porta 8585. Você verá exibido na página: "Hello ServBay!".O ServBay oferece suporte fácil a domínios personalizados e certificados SSL gratuitos, incluindo HTTPS automático em domínios
.servbay.demo
. Assim, é possível desenvolver e testar localmente já utilizando HTTPS, o que aproxima o ambiente de desenvolvimento do de produção, aumentando a chance de detectar problemas antecipadamente.
Deploy do ambiente de produção
Após concluir o desenvolvimento do projeto, é interessante fazer um teste de execução simulando o ambiente de produção.
Preparando o ambiente de produção
Projetos Express.js em produção normalmente usam a variável de ambiente
NODE_ENV
definida comoproduction
. Isso pode alterar o funcionamento de alguns módulos, como desativar debug, habilitar otimizações, etc. Assegure-se de que o código reaja corretamente aNODE_ENV=production
.Executando o servidor em modo produção
No diretório do projeto, execute o servidor simulando produção com uma porta diferente — por exemplo,
8586
— e iniciando o app comNODE_ENV=production
:bashcd /Applications/ServBay/www/servbay-express-app PORT=8586 NODE_ENV=production npm start
1
2O terminal indicará que o servidor está ouvindo na porta
8586
.Configurando proxy reverso (produção) no ServBay
Do mesmo modo, configure outro site proxy reverso para a versão de produção.
No painel do ServBay, em “Sites”, clique em adicionar e configure:
- Nome:
My first Express.js production site
- Domínio:
servbay-express-test-prod.servbay.demo
(ou outro domínio desejado para simular produção) - Tipo de Site:
Proxy Reverso
- IP:
127.0.0.1
- Porta:
8586
(porta da instância de produção)
Salve e aplique as mudanças.
- Nome:
Acessando o site em modo produção
Acesse, pelo navegador, o domínio de produção:
https://servbay-express-test-prod.servbay.demo
. Assim, você estará testando em ambiente local o comportamento da app como se fosse produção.
Conexão com bancos de dados
O ServBay oferece suporte a diversos pacotes de banco de dados, como MariaDB, PostgreSQL, MongoDB e Redis, facilitando o desenvolvimento local. Após ativar os bancos desejados no ServBay, seu projeto Express.js pode se conectar facilmente a eles. O ServBay normalmente define usuários e senhas padrão; por exemplo, para MariaDB/MySQL o usuário root
e senha password
, para PostgreSQL o usuário user
com senha password
e banco padrão servbay_default
. Use essas credenciais ou consulte a interface do ServBay para mais detalhes.
Veja exemplos de como conectar seu projeto Express.js a esses bancos. Certifique-se de instalar via npm install <nome-do-pacote>
o driver Node.js adequado.
Conectando ao MongoDB
Primeiro, instale o driver MongoDB
mongoose
(um ORM popular):bashnpm install mongoose
1Depois, conecte dentro do seu código (por exemplo, em
app.js
ou um arquivo de configuração):javascriptvar mongoose = require('mongoose'); // Conecta ao MongoDB local, usando o banco servbay-express-app // O MongoDB padrão do ServBay não exige autenticação mongoose.connect('mongodb://localhost/servbay-express-app', { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('MongoDB connection error:', err));
1
2
3
4
5
6
7
8
9
10Certifique-se de que o pacote MongoDB do ServBay está ativo.
Conectando ao Redis
Instale o cliente Redis
redis
:bashnpm install redis
1E conecte no seu código:
javascriptvar redis = require('redis'); // Redis padrão do ServBay está em localhost:6379, sem senha var client = redis.createClient({ host: 'localhost', port: 6379 }); client.on('connect', function() { console.log('Connected to Redis'); }); client.on('error', function (err) { console.log('Redis Error: ' + err); }); // Exemplo: set/get chave // client.set('mykey', 'Hello from Express!', redis.print); // client.get('mykey', function(err, reply) { // if (err) throw err; // console.log(reply); // Mostra "Hello from Express!" // }); // Use o objeto client para outras operações Redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Confira se o pacote Redis do ServBay está ativo.
Conectando ao MariaDB / MySQL
ServBay suporta MariaDB e MySQL. Use o pacote
mariadb
oumysql2
do npm. Aqui, usaremosmariadb
, que também conecta ao MySQL.Instale via:
bashnpm install mariadb # ou npm install mysql2
1Utilize as credenciais padrão do ServBay. Para MariaDB/MySQL, usuário root senha
password
:javascriptvar mariadb = require('mariadb'); // MariaDB/MySQL padrão do ServBay roda em localhost:3306 var pool = mariadb.createPool({ host: 'localhost', port: 3306, // Porta padrão user: 'root', // Usuário padrão ServBay password: 'password', // Senha padrão ServBay database: 'servbay_express_app', // Crie esse banco no ServBay connectionLimit: 5 // Tamanho do pool de conexões }); pool.getConnection() .then(conn => { console.log("Connected to MariaDB/MySQL"); // Use o objeto conn para executar queries // conn.query("SELECT 1").then(...).catch(...).finally(() => conn.release()); conn.release(); // Liberar a conexão para o pool após usar }) .catch(err => { console.log("Not connected due to error: " + err); });
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21Antes de conectar, crie o banco
servbay_express_app
usando uma ferramenta como phpMyAdmin ou Adminer (acessíveis via ServBay). Assegure-se também que o pacote MariaDB ou MySQL do ServBay está ativo.Conectando ao PostgreSQL
Instale o driver PostgreSQL
pg
:bashnpm install pg
1Use as credenciais padrão: usuário
user
, senhapassword
, bancoservbay_default
:javascriptvar { Pool } = require('pg'); // PostgreSQL padrão do ServBay roda em localhost:5432 var pool = new Pool({ user: 'user', // Usuário padrão ServBay host: 'localhost', database: 'servbay_default', // Banco padrão ou outro criado password: 'password', // Senha padrão ServBay port: 5432, // Porta padrão }); pool.connect((err, client, done) => { if (err) { console.error('PostgreSQL connection error:', err); return; } console.log('Connected to PostgreSQL'); // Use o objeto client para queries // client.query('SELECT NOW()', (err, res) => { ... done(); }); done(); // Liberar cliente após uso }); // Alternativamente, usando async/await // try { // const client = await pool.connect(); // console.log('Connected to PostgreSQL'); // // const res = await client.query('SELECT NOW()'); // // console.log(res.rows[0]); // client.release(); // Liberar cliente após uso // } catch (err) { // console.error('PostgreSQL connection error:', err); // }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31Verifique se o pacote PostgreSQL do ServBay está ativo.
Resumo
Seguindo esses passos, você conseguiu criar, configurar e executar um projeto Express.js no ServBay. Você aprendeu como:
- Inicializar um projeto usando
express-generator
. - Executar sua aplicação Express.js em uma porta customizada.
- Configurar proxies reversos usando o recurso Sites do ServBay, acessando sua aplicação Node.js via portas HTTP/S padrão.
- Conectar-se a diversos bancos de dados populares no ambiente fornecido pelo ServBay.
O ServBay simplifica enormemente a preparação e o gerenciamento do ambiente local de desenvolvimento Node.js (Express.js), permitindo que você foque no desenvolvimento do código. Além disso, oferece recursos extras como SSL automático, backup de sites e visualização de logs, tornando todo o fluxo de trabalho local muito mais prático.