CursosEmpresasBlogLiveConfPrecios

Presentación del proyecto

Clase 20 de 29 • Curso de Manipulación del DOM

Clase anteriorSiguiente clase

Contenido del curso

DOM y Web API
  • 1
    Y entonces nació internet...

    Y entonces nació internet...

    02:23
  • 2

    Accede a la versión más actualizada de este contenido

    00:14
  • 3
    ¿Qué es el DOM?

    ¿Qué es el DOM?

    02:39
  • 4
    Web APIs modernas

    Web APIs modernas

    03:17
Operaciones básicas
  • 5
    Leer nodos

    Leer nodos

    09:31
  • 6
    NodeLists vs Array

    NodeLists vs Array

    03:46
  • 7
    Crear y agregar

    Crear y agregar

    15:47
  • 8
    Otras formas de agregar

    Otras formas de agregar

    06:55
  • 9
    Atributos y propiedades

    Atributos y propiedades

    05:12
  • 10
    Eliminar nodos

    Eliminar nodos

    09:31
  • 11
    Operaciones en lote

    Operaciones en lote

    06:52
Workshop 1: Fetch
  • 12
    Presentación del proyecto

    Presentación del proyecto

    01:10
  • 13
    Descargando información y creando nodos

    Descargando información y creando nodos

    18:36
  • 14
    Enriqueciendo la información

    Enriqueciendo la información

    10:53
  • 15
    Usando la API de internacionalización del browser

    Usando la API de internacionalización del browser

    12:14
  • 16
    Comparte el resultado

    Comparte el resultado

    02:18
Eventos
  • 17
    Reaccionar a lo que sucede en el DOM

    Reaccionar a lo que sucede en el DOM

    13:58
  • 18
    Event propagation

    Event propagation

    12:08
  • 19
    Event delegation

    Event delegation

    05:32
Workshop 2: Lazy loading
  • 20
    Presentación del proyecto

    Presentación del proyecto

    03:34
  • 21
    Nuestro propio plugin Lazy Loading

    Nuestro propio plugin Lazy Loading

    08:32
  • 22
    Creando las imagenes con JavaScript

    Creando las imagenes con JavaScript

    17:33
  • 23
    Intersection Observer

    Intersection Observer

    14:21
  • 24
    Aplicando Lazy loading

    Aplicando Lazy loading

    13:07
  • 25
    Comparte el resultado

    Comparte el resultado

    03:17
Workshop 3
  • 26
    Proyectos propuestos

    Proyectos propuestos

    04:17
Librerías relacionadas
  • 27
    ¿Y jQuery?

    ¿Y jQuery?

    03:41
  • 28
    ¿Y JSX?

    ¿Y JSX?

    09:40
Conclusiones
  • 29
    Conclusiones

    Conclusiones

    01:56
    Jimmy Buriticá Londoño

    Jimmy Buriticá Londoño

    student•
    hace 5 años
    19-Lazy-loading.png
      Eduardo Rodriguez

      Eduardo Rodriguez

      student•
      hace 5 años

      Muy descriptiva la imagen

      Sebastian Heredia

      Sebastian Heredia

      student•
      hace 4 años

      Que excelente imagen, gracias.

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher•
    hace 5 años

    Es importante mencionar que hoy en día el navegador ya tiene implementada una api nativa en HTML de Lazy Loading: . https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading . Sin embargo, aún no es compatible con todos los navegadores: . https://www.caniuse.com/?search=lazy%20loading . El motivo de usar Lazy Loading es la optimización de la página, es decir, es mejor que de inicio un usuario cargue pocos recursos de la página, de esta forma se acelera la carga de la misma, porque no tiene que cargar 100 imagenes de golpe, sino que de poquito a poquito va cargando las imágenes y se hace todo más ameno :D

      Andrés Felipe García Rendón

      Andrés Felipe García Rendón

      student•
      hace 5 años

      Creo que soy fan de Lazy Loading, no sabia que existía pero eso en definitiva creo que optimiza el sitio (?)

      Giselle Desiree Boyer Jimenez

      Giselle Desiree Boyer Jimenez

      student•
      hace 5 años

      Exactamente Andrés, el lazy loading permitirá que la página cargue más rápido.

    Efraín Hernández García

    Efraín Hernández García

    student•
    hace 5 años

    Yo sabía que es posible hacer esto con HTML puro, es decir ya sin JavaScript y esa API de Intersection Observer

    lazy-loading.jpg
      Anfernee Valera

      Anfernee Valera

      student•
      hace 4 años

      SI. Ya hay una API nativa de HTML para hacer Lazy loading, lo malo es que aun no está compatible para todos los navegadores 😥

    Brandon Argel Verdeja Domínguez

    Brandon Argel Verdeja Domínguez

    student•
    hace 4 años

    Lazy Loading vs Eager Loading

    Para que nuestro proyecto cargue más rápido teniendo en cuenta todo tipo de usuarios (Con una débil señal de internet o con un dispositivo de gama baja) podemos utilizar diferentes técnicas de loading:

    • Lazy Loading: Es cuando retrasamos la carga de algunos elementos para reducir el tiempo de descarga inicial, y los vamos descargando a medida que el usuario avanza en nuestra página.
    • Eager Loading: Descarga todo a la vez.

    Técnicas de lazy loading:

    • Nativo: En el caso de las imágenes podemos asignar el atributo loading="lazy"
    • Intersection Observer: Utilizando esta API podemos detectar cuando uno o varios elementos están cerca o dentro del área visible del viewport.
    • Scroll listener: Escuchando el evento de scroll, obtener la altura de un o varios elementos y detectar cuando vayan a entrar a la pantalla.
    Giselle Desiree Boyer Jimenez

    Giselle Desiree Boyer Jimenez

    student•
    hace 5 años

    El lazy loading es super útil tanto para apps como páginas web, permitirá que la carga de la página sea mucho más rápida mejorando así la experiencia del usuario.

    Daniel David Mármol Rivero

    Daniel David Mármol Rivero

    student•
    hace 5 años

    El taller consiste en agregar una nueva API llamada intersection observer y todo lo aprendido anteriormente. El sitio se llamará Lazy loading para agregar imágenes y limpiarlas. En la cónsola podremos ver cuantas imágenes se solicitan y cuantas se han cargada (Solo cuando son visibles en el navegador). Esto es una técnica muy optimizada y avanzada de optimización WEB.

    Alexandra Gabriela

    Alexandra Gabriela

    student•
    hace 2 años

    Hoy en día 'lazy loading' ya es compatible con Chrome, Firefox, Safari y Edge.

    Fredy A. Yomayuza  Colorado

    Fredy A. Yomayuza Colorado

    student•
    hace 5 años

    al clonar un proyecto en github es necesario estar conectado a nuestra cuenta personal ..?

      Luis Lira

      Luis Lira

      student•
      hace 5 años

      No obligatoriamente, si solo haces "git clone" creo que no es necesario que tengas asociada la PC a tu cuenta de GitHub

      Cristian Roso

      Cristian Roso

      student•
      hace 5 años

      Hola! Recuerda que Git es un software para control de versiones y Github una plataforma para sincronizarlo en la nube. Así que tú puedes clonar un repositorio a tu equipo sin necesidad de iniciar sesión ya que estarás usando Git, no GitHub. Ahora, si le haces push request al mismo repositorio o a uno nuevo en GitHub para tu uso ya es otra historia

    Cesar Guevara Cabrera

    Cesar Guevara Cabrera

    student•
    hace 4 años

    Aqui se explica con el uso ya directo de un atributo HTML:

    https://www.youtube.com/watch?v=Vko5cC4SMSc

    Gonzalo Vidal

    Gonzalo Vidal

    student•
    hace 4 años

    Esto me recordó a un término similar, el LAZY COMPILING, que se da en navegadores modernos, lo cual es que el contenido de las funciones no son compiladas al inicio de la ejecución del codigo Javascript, sino hasta que son llamadas(invocadas) así es mucho más rápido la carga al no compilar funciones que se tardarán en llamar (como la ejecución de lineas de código cuando se presione un botón) o incluso quizás nunca son disparados estos eventos(ni funciones)

    Fredy A. Yomayuza  Colorado

    Fredy A. Yomayuza Colorado

    student•
    hace 5 años

    Como instalo las dependencias en windows..?

      Luis Lira

      Luis Lira

      student•
      hace 5 años

      Se instalan igual en cualquier SO, estando sobre el directorio del proyecto ejecutas npm install, esto busca el archivo package.json e instala todo lo que indica ahí.

      Fredy A. Yomayuza  Colorado

      Fredy A. Yomayuza Colorado

      student•
      hace 5 años

      Gracias Luis

    José Luis Quiróz Casas

    José Luis Quiróz Casas

    student•
    hace 3 años

    Maravilloso curso ¡

    Carlos Rubén Díaz Gutiérrez

    Carlos Rubén Díaz Gutiérrez

    student•
    hace 3 años

    ¡Hey! Esta función la tiene Platzi en la sección de aportes y comentarios. 🙌

    Jhonatan Ronaldo

    Jhonatan Ronaldo

    student•
    hace 5 años

    No pude clonar el proyecto final :(

      Karen Sanchez

      Karen Sanchez

      student•
      hace 3 años

      tampoco pude clonar el repositorio me decia permission denied

    Carlos S. Aldazosa

    Carlos S. Aldazosa

    student•
    hace 3 años

    Con el intersectionObserver se puede hacer infinite scroll, verdad?

      Jonathan Forero

      Jonathan Forero

      student•
      hace 3 años

      Sí, el Intersection Observer API puede utilizarse para implementar la funcionalidad de "infinite scroll" (desplazamiento infinito) en una página web. El "infinite scroll" es una técnica que permite cargar más contenido a medida que el usuario se desplaza hacia abajo en una página, sin tener que hacer clic en un botón de carga adicional.

      El Intersection Observer API proporciona una forma eficiente de observar los cambios en la visibilidad de un elemento en relación con un contenedor o la ventana del navegador. Esto es especialmente útil para determinar si un elemento se encuentra dentro del área visible del usuario.

      Ejemplo básico:

      // Crear el observador const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { // El elemento es visible, cargar más contenido // Aquí puedes realizar una solicitud de carga de contenido adicional // y agregarlo al DOM } }); }); // Seleccionar el elemento que se va a observar const targetElement = document.querySelector('#scroll-container'); // Observar el elemento observer.observe(targetElement);

      En este ejemplo, se crea un observador utilizando la clase IntersectionObserver. Luego, se selecciona el elemento #scroll-container que deseas observar y se llama al método observe() del observador para comenzar a observar los cambios de visibilidad en ese elemento.

      Cada vez que el elemento se vuelve visible, el callback que se pasa al constructor de IntersectionObserver se ejecuta y puedes realizar una solicitud para cargar más contenido en ese momento.

      Ten en cuenta que este es solo un ejemplo básico para ilustrar el concepto. En una implementación real, probablemente necesitarías manejar detalles adicionales, como controlar cuándo dejar de cargar más contenido o manejar errores de carga.

    Charles Duck Castillo Rosas

    Charles Duck Castillo Rosas

    student•
    hace 3 años

    Mis apuntes en Notion💚

    Andres Prieto

    Andres Prieto

    student•
    hace 3 años

    Aún recuerdo que esta vaina la vi por primera vez en unos de los cursos de TypeScript, entre estas 2 técnicas la carga se puede hacer semi "infinita" que nunca se ve lo gris pues:

    https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

    Kevin Ramirez

    Kevin Ramirez

    student•
    hace 3 años

    Si no les carga la imagen de los zorros, pueden usar esta alternativa https://placekitten.com/

    Screenshot_2.png

    Así adapté el código de utils.js para la nueva API

    const minimum = 200; const maximum = 500; const random = () => Math.floor(Math.random() * (maximum - minimum)) + minimum; export const createImageNodes = () => { const wrapper = document.createElement("div"); wrapper.className = "p-4"; const image = document.createElement("img"); image.className = "mx-auto rounded-md bg-gray-300"; const ran = random(); image.src = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIwIiBoZWlnaHQ9IjMyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiLz4="; image.dataset.src = `https://placekitten.com/g/${ran}/${ran}`; image.width = 320; wrapper.append(image); return [wrapper, image]; };
    Rodrigo Andre Gutierrez

    Rodrigo Andre Gutierrez

    student•
    hace 3 años

    si cuando intentan conectar su repositorio de github con el del pc la terminal les dice que error: remoto origin ya existe, para desvincular el repositorio local del repositorio remoto de platzi y poder vincularlo al de nosotros usamos:

    git remote rm origin

    y luego conectamos nuestro repositorio de github o lo que queramos. ejemplo:

    git remote add origin https://github.com/nombredeusuario/nombredelrepo.git
    Karen Sanchez

    Karen Sanchez

    student•
    hace 3 años

    No pude clonar el repositorio

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads