Curso de JavaScript para Principiantes - Lección 12: Proyecto Final: Creando una Aplicación Simple
¡Bienvenido a la duodécima y última lección del curso! Has recorrido un camino increíble, aprendiendo variables, operadores, condicionales, bucles, funciones, arreglos, objetos, DOM, eventos y programación asíncrona. Ahora es el momento de unir todo en un proyecto final: una aplicación de lista de tareas interactiva. Esta app te permitirá añadir, marcar como completadas y eliminar tareas, con la opción de simular guardarlas en un servidor (como si fuera una base de datos en PHP). Es una forma práctica de aplicar lo aprendido y ver cómo JavaScript brilla en la web.
¿Qué vamos a construir?
Crearemos una lista de tareas con las siguientes características:
- Añadir nuevas tareas desde un formulario.
- Marcar tareas como completadas (con un cambio visual).
- Eliminar tareas.
- Simular guardar las tareas en un "servidor" usando programación asíncrona (como si enviaras datos a una base de datos en PHP).
- Mostrar mensajes de estado (por ejemplo, "Cargando..." o "Error").
Conexión con PHP: En PHP, podrías construir algo
similar generando un formulario HTML y procesando los datos en el
servidor con $_POST
y una base de datos. Aquí, todo ocurre
en el navegador, con JavaScript manejando la lógica y el DOM para
actualizar la interfaz en tiempo real.
Código del Proyecto
Vamos a construir la aplicación paso a paso. Aquí está el código completo, seguido de una explicación detallada.
HTML (index.html)
<!DOCTYPE html>
<html>
<head>
<title>Lista de Tareas</title>
<style>
body { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; }
.tarea { padding: 10px; margin: 5px 0; background: #f9f9f9; }
.completada { text-decoration: line-through; background: #d0ffd0; }
.error { color: red; }
.success { color: green; }
</style>
</head>
<body>
<h1>Mi Lista de Tareas</h1>
<form id="formulario">
<input type="text" id="nueva-tarea" placeholder="Escribe una tarea">
<button type="submit">Añadir</button>
</form>
<p id="mensaje"></p>
<ul id="lista-tareas"></ul>
<script src="script.js"></script>
</body>
</html>
JavaScript (script.js)
// Seleccionar elementos del DOM
const formulario = document.getElementById("formulario");
const inputTarea = document.getElementById("nueva-tarea");
const listaTareas = document.getElementById("lista-tareas");
const mensaje = document.getElementById("mensaje");
// Arreglo para almacenar tareas
let tareas = [];
// Función para simular guardar en un servidor
function guardarTareaEnServidor(tarea) {
return new Promise((resolve, reject) => {
setTimeout(() => {
let exito = Math.random() > 0.2; // 80% de probabilidad de éxito
if (exito) {
resolve("Tarea guardada");
} else {
reject("Error al guardar la tarea");
}
}, 1000); // Simula 1 segundo de espera
});
}
// Función para mostrar mensajes
function mostrarMensaje(texto, tipo) {
mensaje.textContent = texto;
mensaje.className = tipo;
setTimeout(() => {
mensaje.textContent = "";
mensaje.className = "";
}, 3000); // Limpia el mensaje después de 3 segundos
}
// Función para renderizar las tareas
function renderizarTareas() {
listaTareas.innerHTML = ""; // Limpia la lista
tareas.forEach((tarea, indice) => {
const li = document.createElement("li");
li.className = tarea.completada ? "tarea completada" : "tarea";
li.innerHTML = `
${tarea.texto}
<button onclick="marcarCompletada(${indice})">✔</button>
<button onclick="eliminarTarea(${indice})">🗑</button>
`;
listaTareas.appendChild(li);
});
}
// Función para añadir una
- Anterior « Programación Asíncrona
- Siguiente Fin del tema »