Estrutura básica de uma app
Estrutura básica de diretórios e ficheiros numa app Express
Uma estrutura organizada ajuda a manter o código limpo, modular e fácil de manter. Um exemplo comum e recomendado de estrutura é:
project-root/
├── src/
│ ├── config/
│ │ └── db.js # Configurações externas, como base de dados
│ ├── controllers/
│ │ └── userController.js # Lógica do negócio e manipulação das requisições
│ ├── models/
│ │ └── userModel.js # Definição dos modelos de dados
│ ├── routes/
│ │ └── userRoutes.js # Definição das rotas REST ou endpoints
│ ├── middlewares/
│ │ └── authMiddleware.js # Middlewares personalizados (autenticação, logs, etc.)
│ ├── utils/
│ │ └── helper.js # Funções utilitárias
│ ├── app.js # Configuração do Express e middleware
│ └── server.js # Inicialização do servidor e porta
├── public/ # Arquivos estáticos (CSS, JS, imagens)
├── test/ # Testes unitários ou funcionais
├── node_modules/ # Dependências instaladas (gerado pelo npm)
├── .env # Variáveis de ambiente
├── .gitignore # Configurações para Git
├── package.json # Metadados e dependências do projeto
├── package-lock.json # Controle de versões das dependências
└── README.md # Documentação do projeto
Explicação dos ficheiros essenciais
- app.js: Ponto onde a aplicação Express é configurada. Aqui se define os middlewares (e.g.
express.json()para JSON request body), as rotas principais e a configuração geral da app.
const express = require('express');
const app = express();
const userRoutes = require('./routes/userRoutes');
app.use(express.json()); // Middleware para JSON
app.use('/api/users', userRoutes); // Define as rotas da API para usuários
module.exports = app;
- server.js: Responsável por iniciar o servidor, definir a porta e rodar a app.
const app = require('./app');
const dotenv = require('dotenv');
dotenv.config();
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server rodando na porta ${PORT}`);
});
- routes/: Diretório onde ficam os ficheiros que definem as rotas. Exemplo de rota básica:
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('API funcionando');
});
module.exports = router;
- public/: Contém arquivos estáticos que o Express vai servir diretamente (CSS, imagens, JS para front-end).
O ficheiro package.json: metadados e dependências
O ficheiro package.json é o manifesto do projeto Node.js e define metadados, scripts e dependências. Exemplo básico para um app Express:
{
"name": "meu-app-express",
"version": "1.0.0",
"description": "Um app básico usando Express.js",
"main": "server.js",
"scripts": {
"start": "node server.js",
"dev": "nodemon server.js"
},
"author": "Seu Nome",
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"dotenv": "^16.0.0"
},
"devDependencies": {
"nodemon": "^2.0.22"
}
}
- name, version, description: Informações básicas do projeto.
- main: Ficheiro de entrada da aplicação.
- scripts: Comandos que podem ser executados com
npm run startounpm run dev. - dependencies: Bibliotecas necessárias para rodar a aplicação (Express, dotenv etc).
- devDependencies: Dependências para ambiente de desenvolvimento (ex.: nodemon para reiniciar servidor automaticamente).
Essa organização facilita a escalabilidade do app e a manutenção. A estrutura pode ser adaptada ao porte ou complexidade do projeto, mas essa base é eficiente para a maioria dos casos com Express.js.
