1. Construye la aplicación del frontend
Primero, necesitas generar los archivos estáticos del frontend. Esto usualmente se logra con el comando de construcción en el framework del frontend. Por ejemplo:
-
React:
npm run build -
Angular:
ng build --prod -
Vue.js:
npm run build
Esto generará una carpeta (por ejemplo, build o
dist) que contiene los archivos estáticos como
index.html, main.js y
styles.css.
2. Configura el servidor del backend para servir los archivos del frontend
En el backend (por ejemplo, usando Node.js con Express), debes configurar un middleware para servir la carpeta generada del frontend.
const express = require('express');
const path = require('path');
const app = express();
// Ruta estática para servir archivos del frontend
app.use(express.static(path.join(__dirname, 'build')));
// Redirigir todas las rutas al index.html del frontend
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
// Inicia el servidor
app.listen(3000, () => {
console.log('Servidor funcionando en http://localhost:3000');
});
-
express.static: Sirve los archivos estáticos (HTML, CSS, JS) desde la carpetabuildodist. -
app.get('*'): Redirige todas las rutas no específicas al archivoindex.htmlpara que el enrutado del frontend maneje la navegación.
3. Configura rutas específicas en el backend
Si el backend tiene rutas propias (por ejemplo, APIs o lógica de negocio), asegúrate de definirlas antes de la configuración para servir el frontend.
// Rutas del backend (APIs)
app.get('/api/data', (req, res) => {
res.json({ message: 'Datos desde el backend' });
});
// Servir frontend después de las rutas del backend
app.use(express.static(path.join(__dirname, 'build')));
// Redirigir todas las demás rutas al index.html
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
4. Considera rutas dinámicas del frontend
Las aplicaciones de frontend avanzado usan enrutadores (como React Router)
para manejar rutas dinámicas. Al redirigir todas las rutas al
index.html, te aseguras de que el frontend pueda manejar la
navegación.
5. Despliegue en producción
Para producción, puedes optimizar el servidor usando servicios como:
- NGINX o Apache: Para servir los archivos estáticos del frontend y delegar las APIs al backend.
- Cloud services: AWS, Azure o Vercel pueden manejar integraciones de frontend y backend de forma escalable.
