3-Web de Lista de Libros- Estáticos (public)
Cómo Usar la Carpeta Public en Node.js para Archivos Estáticos
Cuando desarrollas aplicaciones web con Node.js y Express, es común necesitar servir archivos estáticos como CSS, JavaScript e imágenes. La carpeta public
es el lugar ideal para almacenar estos recursos. En este post, te mostraré cómo configurarla correctamente.
Paso 1: Crear la Estructura de Carpetas
Primero, organiza tus archivos estáticos en una carpeta llamada public
con subcarpetas para cada tipo de recurso:
mi-app/
├── node_modules/
├── public/ ← Carpeta para archivos estáticos
│ ├── css/ ← Estilos CSS
│ ├── js/ ← Scripts JavaScript
│ └── images/ ← Imágenes
├── views/
│ └── index.ejs ← Plantillas EJS
├── app.js ← Archivo principal
├── package.json
└── .gitignore
Inicializar el proyecto
bash
npm init --yes
npm init -y
Express - El framework web
bash
npm install express
Morgan - Logger para desarrollo
bash
npm install morgan
npm install nodemon
Motor de plantillas
bash
npm install ejs
npm install
npm start
Métodos para Iniciar el Proyecto
a) npm run dev (Recomendado para desarrollo)
bash
npm run dev
Cómo funciona: Ejecuta el script "dev" definido en tu package.json
Requisito: Debes tener Nodemon instalado y configurado en package.json:
json
"scripts": {
"dev": "nodemon app.js"
}
Cómo funciona: Ejecuta el script "dev" definido en tu package.json
Requisito: Debes tener Nodemon instalado y configurado en package.json:
json
}
c) npm start (Para producción)
bash
npm start
Configuración típica:
json
"scripts": {
"start": "node app.js"
}
Configuración típica:
json
Paso 2: Configurar Express para Servir Archivos Estáticos
En tu archivo app.js
, usa el middleware express.static
para indicarle a Express que sirva los archivos de la carpeta public
:
const express = require('express');
const path = require('path');
const app = express();
// Middleware para archivos estáticos
app.use(express.static(path.join(__dirname, 'public')));
// Configuración de EJS
app.set('views', path.join(__dirname, 'views')); // Define la carpeta de vistas
app.set('view engine', 'ejs'); // Establece EJS como motor de plantillas
// Ruta principal que renderiza index.ejs
app.get('/', (req, res) => {
res.render('index', { titulo: 'Mi App Web' }); // Pasa datos a la vista
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Servidor en http://localhost:${PORT}`);
});
Con esto, Express automáticamente servirá cualquier archivo dentro de public
bajo la ruta raíz (/
).
Paso 3: Enlazar Archivos Estáticos en tus Vistas
Ahora puedes enlazar tus archivos CSS, JS e imágenes directamente en tus plantillas (como index.ejs
):
<!DOCTYPE html>
<html>
<head>
<title><%= titulo %></title>
<link rel="stylesheet" href="/css/styles.css"> <!-- Archivo CSS -->
</head>
<body>
<h1>Bienvenido a <%= titulo %></h1>
<p>Ahora con archivos estáticos</p>
<script src="/js/app.js"></script> <!-- Archivo JS -->
</body>
</html>
Notas Importantes:
Rutas: Al usar
express.static
, los archivos enpublic/css/styles.css
se acceden via/css/styles.css
.Orden de middlewares: Siempre coloca
express.static
antes de las rutas dinámicas para evitar conflictos.Optimización: Para producción, considera usar un CDN o middleware de compresión para archivos estáticos.
¡Y eso es todo! Con esta configuración, tu aplicación Node.js podrá servir archivos estáticos de manera eficiente.
¿Tienes dudas o sugerencias? ¡Déjalas en los comentarios!
git remoto agregar origen https://github.com/SaulSoteloSuastegui/node-libros.git git rama -M principal
git push -u origen principal
Comentarios
Publicar un comentario