Freddy Montes Profile picture
Jun 11 17 tweets 8 min read
✅ ¿Quieres practicar #frontend sin quedarte pegado?

✨ Te preparé un ejercicio para hoy ✨

🧵 Thread con tareas y pasos a realizar para completarlo.

❤️ RT please

PD. Estoy probando este formato, si les gusta puedo desarrollar muchos más ¡feedback bienvenido!
La aplicación es un #webapp para crear de facturas que les permite a los usuarios crear facturas agregando y/o eliminando items.

Los items consisten en

- Descripción
- Precio

La aplicación debe calcular el total a medida que se van agregando o items.
Analicemos el diseño.

Es una sola pantalla con dos estados:

🪫 Sin items:
1. Formulario: descripción, precio y botón
2. Mensaje de "no hay ítems"

🔋 Con items:
1. Formulario: descripción, precio y botón
2. Líneas de la factura con botón para eliminar
☝🏽 Acciones de usuario
1. Usuario ingresa descripción
2. Ingresa precio
3. Hace clic en el botón "Add item"

*Considera que ambos campos (descripción y precio) son requeridos y el precio solo acepta números.
Paréntesis, debido al tamaño y scope de este ejercicio, voy a recomendar usar @codepen o cualquier otro editor en línea de tu preferencia.
@CodePen ✅ Tarea 1: Crear la interfaz

▶ Escribe el HTML del formulario, usa la etiqueta <form> y los types correctos en los input.

▶ Crea el estado vacío

▶ Crea la tabla vacía (y escondida) para resultados. Como es una tabla puedes utilizar <table> <thead> y <tbody>.
@CodePen ✅ Tarea 2: Validar el form

▶ Usar las capacidades nativas del navegador con el atributo "required" combinado con "type" para que se valide cuando el usuario intente enviarlo.

Si no es válido, no se envía
@CodePen ✅ Tarea 3: Obtener valores ingresados

🕓 ¿Cuándo? Cuando el formulario sea válido y se envíe.

▶ Escuchar el evento de submit del formulario

▶ En el callback del evento obtén los valores.

Tira un console.log sin miedo aquí para confirmar que tienes lo valores.
@CodePen ✅ Tarea 4: Guardar los valores

▶ Guarda los valores, toma en cuenta que lo que tienes que imprimir es una lista de items.

¿Cuál es la estructura de datos que funciona como lista? Esa misma tienes que utilizar.
@CodePen ✅ Tarea 5: Imprimir la tabla

▶ Borra o esconde el mensaje de "no hay items"

▶ Crea el row con el contenido obtenido del form y no olvides el botón de borrar

▶ Agrega el row a la tabla que tienes escondida

▶ Muestra la tabla
@CodePen ✅ Tarea 6: Calcula el total

▶ En la "lista" donde guardaste el item puedes iterar para sumar el precio
@CodePen ✅ Tarea 7: Imprimir el total

▶ Crea el elemento
▶ Agregale el total
▶ Agregalo al DOM
@CodePen ✅ Tarea 8: Borrar un item

▶ Agregar el evento clic al botón que agregaste dinámicamente

Otra opción sería agregar el evento click solo al padre del botón, ver a cuál botón se le hizo click para saber cuál row borrar.

Sigue...
@CodePen ✅ Tarea 8: Borrar un item

Una combinación de data atributos + event delegation.

▶ Borrar el row del item
▶ Borrar el item de la lista que tienes guardada
▶ Recalcular el total y actualizar el DOM
@CodePen Y listo, espero que no se me haya pasado nada.

Cualquier feedback es bienvenido.
@CodePen ❤️ Si te gusto este thread dale RT al primer tweet y sígueme para más contenido.

📕 Y tengo un libro gratis de tips de #HTML, #CSS y #JavaScript fmontes.com/99

📸 También hago contenido en instagram.com/fmontes

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Freddy Montes

Freddy Montes Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @fmontes

Jun 7
🙃 ¿Te quedas pegado cuando intentas hacer un proyecto de #programación?

😉 Te explico un método para salir de esa pega y evitar la frustración.

🧵 THREAD
🧠 Cuando no puedes arrancar es porque estás viendo la aplicación como una sola tarea gigante y tu cerebro está tratando de resolverla, pero en realidad lo que debes hacer es resolver muchas tareas pequeñas.

➡️ Vamos con un ejemplo.
🤑 Desarrollemos un #app para calcular propinas.

Ok, pero ¿Por dónde comienzo?

☝🏽 Lo primero yo recomiendo es hacer un pequeño dibujo de como se va a ver con anotaciones de como va a funcionar.
Read 19 tweets
Jun 3
😭 Conseguir tu primer empleo en #frontend está difícil, lo sé.

😇 Mejorar tus posibilidades con un portafolio.

Te dejo los recursos que necesitas:

✅ ¿Como hacerlo?
❤️ Plantilla de portafolio GRATIS
💡 Diseños para proyectos

🥳 Ayudame con un RT

👇🏽 HILO
Escribí este post para dar más detalle sobre como y porque necesitas un portafolio.

Está lleno de recursos para crearlo, mantenerlo y publicarlo.

fmontes.com/es/blog/how-to…
Si el diseño no es lo tuyo, te dejo un template que diseño con todo lo necesario para desarrollar tu portfolio.

figma.com/community/file…
Read 5 tweets
May 24
¿Mal performance en tu #webapp o #paginaweb?

13 tips rápidos, fáciles y accionables para mejorar el #webperf

❤️ RT para repartir amor!

🧵 HILO
📊 Lo que no se mide no lo puedes arreglar.

Tienes que medir la performance de tu website.

Mis tools favoritas:

@____lighthouse
@gtmetrix
@pingdom Speed Test

Usa las recomendaciones en los resultados para mejorar.
@____lighthouse @gtmetrix @pingdom 🌄 Imágenes 1

Usa el tamaño correcto, si tienes que mostrar la imagen en 300px de width no metas una imagen de 5000px que pesa 5mb te afecta la performance.
Read 18 tweets
May 16
🤮 ¿La tipografía en tu sitio web se ve extraña?

🎼 Seguro no tiene "ritmo vertical" y este concepto te va a cambiar la vida.

📖 Te explico que es y como generarlo.

❤️ RT para evitar diseños feos.

🧵 THREAD
Para entender el ritmo vertical hay que saber que es el "baseline" en la tipografía.

Y no es más que la línea invisible sobre la que se apoya una línea de texto.
El ritmo vertical (vertical rhythm) es un concepto tipográfico que propone que todas las líneas de tu texto deben estar espaciadas unifórmente sin importar:

- Tamaño
- Alto de línea
- Margin o pdding

👀 Veamos un ejemplo...
Read 8 tweets
May 4
Cursos gratis y cortos de los programadores más cracks que yo conozco:

- #JavaScript (de todo) y Flexbox de @wesbos
- #CSS grids de @jensimmons
- #ReactJS y NextJS de @leeerob

❤️ RT comparte el amor!

🧵 HILO Image
El #javascript30 de @wesbos es un clásico javascript30.com son 30 videos de vainilla #JavaScript code challenges. Aprendes de todo, #arrays, #canva, sonido, etc.
También de @wesbos tenemos cssgrid.io para aprender #cssgrids en 25 videos y flexbox.io para aprender #flexbox en 20 videos.
Read 7 tweets
Apr 29
🙊 Secreto para los que están empezando: "80% de lo que van a hacer con #JavaScript en #frontend es agarrar objeto o array y “pintar” #html"

Necesitas saber:

✅ CRUD
✅ Fetch API (Headers, Request, Response y Promise)
✅ Array: filter, map y reduce
✅ DOM manipulation

LINKS 👇🏽
¿Qué es CRUD?

Acrónimo de "Create, Read, Update, Delete" son las operaciones que hacemos en casi cualquier app.

Más info:

🔗 developer.mozilla.org/es/docs/Glossa…
🔗 codepen.io/ianseabrook/pe…
El Fetch API es una utilidad del navegador que te permite hacer requests HTTP.

Más info:

🔗 developer.mozilla.org/en-US/docs/Web…
🔗 robertomiguelz.blogspot.com/2018/02/que-es…
Read 7 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(