gifOS
aka: "buscador de perritos"


Trello v1
Tareas monumentales, poco específicas
Trello v2
Tareas pequeñas, features concretas


Organización

Pensar como si fuese proyecto laboral:
- Tareas chicas (features)
- Trabajar en branches + PRs de Github
- Seguir un orden prioritario (idealmente)
- En caso de trabarme ver si es bloqueante y pedir ayuda o resolver de otra manera/seguir con otra cosa

Estructura General:
- Dividido en secciones
- SPA (ocultando/mostrando)
- Intentando mantener orden semántico
Código JavaScript
Funciones, variables, eventos
Funciones, variables, eventos
Quilombo
Funciones, variables, eventos
Modulos
Quilombo
Funciones, variables, eventos
Modulos
Quilombo de llamados entre si
+
Qué pasa si saco alguno?
Quilombo
PubSub


PubSub = Publish Subscribe
Patrón de diseño
Componentes Emisores
Módulo Intermediario
Componente Subscriptores
Estructura del componente PubSub

Estructura del componente PubSub

Listado de eventos y funciones asociadas
Guarda eventos en el objeto events (cuando pase A quiero que se haga B)
Desuscribe eventos guardados previamente
Avisa al PubSub que ocurrió un evento X y le pasa parámetros opcionales para las callback
Funcionamiento del componente PubSub
events.on( "evento", funcion(es)Callback )
Componente
events.off( "evento", funcionCallback )
Componente
Suscripción a Eventos
Desuscripción a Eventos
events.emit( "evento", params )
Componente
Emisión de Eventos
events.emit( "ocultarMisGifs")
events.on( "ocultarMisGifs", funcionOcultarMisGifs)
events.off( "ocultarMisGifs", funcionOcultarMisGifs)
Ej: Comunicación entre componentes
Mensaje Popup - Borrar Gif


events.on("newPopupDeleteGif", newPopupMessage)
Ok! le aviso a popup cuando ocurra "newPopupDeleteGif" para que haga "newPopupMessage()"
events.on("deleteGif", deleteGif)
Ok! le aviso a MyGifs cuando ocurra "deleteGif" para que haga "deleteGif()"
Ej: Comunicación entre componentes
Mensaje Popup - Borrar Gif
Setup de Eventos
Cuando alguien emita newPopupDeleteGif quiero que me avisen así ejecuto newPopupMessage()
Cuando alguien emita deleteGif quiero que me avisen así ejecuto deleteGif()
MyGifs
MyGifs
PubSub
Módulo Popup
Módulo Popup
PubSub
Ejecuta newPopupMessage() con los parámetros popupContent
Asigna textos, íconos, funciones a los botones de acción y se muestra
Cuando el usuario hace click en aceptar/cancelar ejecuta la función callback pasada por el usuario en popupContent
La función callback en éste caso lanza un nuevo evento: events.emit("deleteGif", localStorageGifID)
Recibe el evento y le avisa a componente popup que ejecute la función asociada, newPopupMessage()
Ejecución
Ejecuta deleteGif() con localStorageGifID como parámetro
Le avisa a MyGifs que ocurrió el evento y que ejecute la función asociada deleteGif()
Ej: Comunicación entre componentes
Mensaje Popup - Borrar Gif
PubSub
Módulo Popup
Módulo Popup
Módulo Popup
PubSub
MyGifs
Cada click en botón de eliminar gif lanza un evento:
events.emit( "newPopupDeleteGif", popupContent*)
MyGifs
*Objeto con datos para el popup y una función callback que indica que hacer al presionar el botón aceptar/cancelar del popup

Estructura de cada Componente

Estructura de cada Componente

IIFE
Variables locales al componente
Cache DOM (queries)
Eventos asociados al componente (click de botones, acciones, etc)
Funciones y métodos privados

El programa en si es un componente


Problemas durante el proyecto:
- POST a giphy (CORS)
- Refactor del JS (x3)
- Mantener controlado el CSS
- Respetar el Trello, prioridades y tareas
Pendientes














Gracias!

gifOS - git
By guido732
gifOS - git
- 22