CursosEmpresasBlogLiveConfPrecios

Intersection Observer

Clase 23 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 min
  • 2

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

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

    ¿Qué es el DOM?

    02:39 min
  • 4
    Web APIs modernas

    Web APIs modernas

    03:17 min

Operaciones básicas

  • 5
    Leer nodos

    Leer nodos

    09:31 min
  • 6
    NodeLists vs Array

    NodeLists vs Array

    03:46 min
  • 7
    Crear y agregar

    Crear y agregar

    15:47 min
  • 8
    Otras formas de agregar

    Otras formas de agregar

    06:55 min
  • 9
    Atributos y propiedades

    Atributos y propiedades

    05:12 min
  • 10
    Eliminar nodos

    Eliminar nodos

    09:31 min
  • 11
    Operaciones en lote

    Operaciones en lote

    06:52 min

Workshop 1: Fetch

  • 12
    Presentación del proyecto

    Presentación del proyecto

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

    Descargando información y creando nodos

    18:36 min
  • 14
    Enriqueciendo la información

    Enriqueciendo la información

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

    Usando la API de internacionalización del browser

    12:14 min
  • 16
    Comparte el resultado

    Comparte el resultado

    02:18 min

Eventos

  • 17
    Reaccionar a lo que sucede en el DOM

    Reaccionar a lo que sucede en el DOM

    13:58 min
  • 18
    Event propagation

    Event propagation

    12:08 min
  • 19
    Event delegation

    Event delegation

    05:32 min

Workshop 2: Lazy loading

  • 20
    Presentación del proyecto

    Presentación del proyecto

    03:34 min
  • 21
    Nuestro propio plugin Lazy Loading

    Nuestro propio plugin Lazy Loading

    08:32 min
  • 22
    Creando las imagenes con JavaScript

    Creando las imagenes con JavaScript

    17:33 min
  • 23
    Intersection Observer

    Intersection Observer

    Viendo ahora
  • 24
    Aplicando Lazy loading

    Aplicando Lazy loading

    13:07 min
  • 25
    Comparte el resultado

    Comparte el resultado

    03:17 min

Workshop 3

  • 26
    Proyectos propuestos

    Proyectos propuestos

    04:17 min

Librerías relacionadas

  • 27
    ¿Y jQuery?

    ¿Y jQuery?

    03:41 min
  • 28
    ¿Y JSX?

    ¿Y JSX?

    09:40 min

Conclusiones

  • 29
    Conclusiones

    Conclusiones

    01:56 min
  • Tomar el examen del curso
    • Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años
      22-IntersectionObserver.png
        Edgar Lopez Arroyo

        Edgar Lopez Arroyo

        student•
        hace 5 años

        Muy claro 👍

        Eduardo Rodriguez

        Eduardo Rodriguez

        student•
        hace 5 años

        Excelente imagen, gracias

      Carlos Eduardo Gomez García

      Carlos Eduardo Gomez García

      teacher•
      hace 5 años

      Con el IntersectionObserver podemos decirle a JavaScript que observe un objeto cuando está dentro de la pantalla (o cuando sale de esta), en el Curso Profesional de JavaScript se habla sobre esto, específicamente en la clase de Intersection Observer, les dejo el link por si quieren profundizar en ello: . https://platzi.com/clases/1642-javascript-profesional/22175-intersectionobserver/ . También les dejo el link de la documentación de esto: . https://developer.mozilla.org/es/docs/Web/API/Intersection_Observer_API . Y también dejo el código de esta clase :D . Adición del Intersection Observer

        Eduardo Diaz

        Eduardo Diaz

        student•
        hace 5 años

        Gracias, ya me estaba confundiendo con el filtro ".filter(IsIntersecting)" porque entendí que IntersectionObserver observaba solo lo que aparecía en la pantalla, entonces si eso era cierto no había necesidad de hacer el filtro para nuevamente decirle que vea solo lo de la pantalla, pero en realidad el IntersectionObserver puede observar todo lo que se ve y lo que no, me quedó claro (Y)

      William Fernando Cañas Salas

      William Fernando Cañas Salas

      student•
      hace 5 años

      Hice varios experimentos con la API y creo que vale la pena aclarar algunos puntos de la clase:

      1. Cuando se crea el observer de la forma que lo hace el profesor, se define por defecto un umbral = 0 para ejecutar el callback. Es decir, el observer va a validar si la imagen se ve o no se ve (así sea un poquito). Para este ejercicio está perfecto, pero ese umbral es parametrizable si queremos que se ejecute el callback por ejemplo si la imagen se ve en un 50% o más. Para eso hay que pasar un segundo parámetro (un objeto) llamado option: const observer = new IntersectionObserver(callback, option)
      2. Cuando se ejecuta el callback (que el profesor pasa como arrow function), esta función recibe como parámetro un array que aquí llamamos entries. El profesor dice que en ese array van TODOS los target que el observer está vigilando y no es así. Si hacen la prueba en la consola y en ese callback sólo hacen un console.log(entries), van a ver que siempre imprime un array de 1 posición y esa posición obecede solamente al target que desencadenó el callback (es decir, la imagen que ahora es visible o que dejó de ser visible en la pantalla).
      3. Dado esto, cuando el profesor hace un filter y un forEach dentro del callback, realmente está usando estos métodos sobre un array de 1 posición.
      4. Ese array de 1 posición tiene en esa posición un objeto. Este objeto describe el evento que interceptó el observer. Este objeto tiene dos propiedades muy relevantes aquí: isIntersecting : que si es false indica que ya no está en el viewport y si es true indica que ya es visible en el viewport (aunque sea un poquitico). target: que indica específicamente cuál elemento (cuál imágen) es la que generó la ejecución del callback.
      5. Entonces, ejecutar el filter realmente valida si ese único objeto en el array está o no está en el viewport. Si lo está seguimos...
      6. El forEach accede a ese único objeto (un recorrido bieeen cortico jeje), y con él ejecuta la función que imprime el 'holis' en consola. Bien podría haber impreso la imagen que desencadenó el callback si en vez de llamar la función 'accion' hiciera entries.filter(isIntersecting).forEach(entry => console.log(entry.target))
      7. Finalmente, uno pensaría que el callback del observer se ejecuta sólo cuando se genera el evento que definimos (que la imagen aparezca en el viewport), pero no. El callback se ejecuta siempre que ejecutemos la función observer.observe(target) para cada target más las veces que ese target desencadene el callback después. En el ejercicio del curso no se nota porque el profesor hace un filter, pero si dentro del callback solamente colocan un console.log('hola'), van a ver que cada vez que agregen una imagen se imprime el saludo, así la foto aún no sea visible en el viewport.
        Luis E

        Luis E

        student•
        hace 5 años

        Muchísimas gracias por tu aporte!! Tus aclaraciones me ayudaron un montón para entender como funciona realmente el intersection observer

        Santiago Reynoso Dunjo

        Santiago Reynoso Dunjo

        student•
        hace 4 años

        Este código puede ser más legible y también puede servir como complemento para tu comentario, gracias.

        const observer = new IntersectionObserver((entries) => { const entry = entries[0]; if (entry.isIntersecting) accion(entry); })
      Luis Alejandro Vera Hernandez

      Luis Alejandro Vera Hernandez

      student•
      hace 4 años

      Aqui el aporte de un crack del curso Profesional de Js. Creditos a quien corresponda.

      intersectionObserver.jpg
        Max Andy Diaz Neyra

        Max Andy Diaz Neyra

        student•
        hace 4 años

        El legendario Braco si mal no recuerdo

        Rohny Mantilla

        Rohny Mantilla

        student•
        hace 4 años

        Un super aporte!! 👍🏼

      Santiago López Daza

      Santiago López Daza

      student•
      hace 5 años

      La dislexia es interesting 👀

        Arturo Mauricio Terceros Beltrán

        Arturo Mauricio Terceros Beltrán

        student•
        hace 5 años

        gracias dislexia 😂🤣

      Juan Diego Loaiza Martinez

      Juan Diego Loaiza Martinez

      student•
      hace 5 años

      Aquí les comparto un video donde se explica muy bien esta API.

      Se realizan varios ejemplos interesantes que pueden ayudar a completar la información de este video

      https://youtu.be/CvXHedd3Z7w

      Yefri Enmanuel Encarnación Jiménez

      Yefri Enmanuel Encarnación Jiménez

      student•
      hace 5 años

      El intersection Observer se va a encargar de obeservar un elemento indicado para realizar una acción cuando este sea visible. Para usarlo debemos instaciarlo y después usar sus metodos. -Recibe como parametro un call back, osea una función que va a ser llamada por el intersectionObeserver.

      • .Observe recibe como parametro el elemento que se va a observar y como función inversa tiene .unObserve que recibe como parametro el elemento que se va a dejar de observar.

      **Ejemplos de uso: **

      -Como en el curso profesional de JS cuando un video ya no es visible para el usuario pausarlo.

      • Cuando tenemos un carousel automatico pausarlo cuando el usuario no lo este viendo.
      • Realizar una acción cuando el usuario pase un elemento X, como mostrar un modal o Alert -Por supuesto el ejemplo de este curso (Hacer Lazy loading), pero no solo con imagenes puede ser con videos, peticiones de datos, e incluso cargar una parte de tu sitio web que consideres que no es principal en tu web, pero incluirla de una en la pagina afectaria la carga de esta arruinando el UX
        Andrés Felipe García Rendón

        Andrés Felipe García Rendón

        student•
        hace 5 años

        Gracias por compartir tus apuntes

        Luis Miguel Aponte Rayo

        Luis Miguel Aponte Rayo

        student•
        hace 3 años

        Gracias bro!

      Alexis Steven Valderrama

      Alexis Steven Valderrama

      student•
      hace 5 años

      Me ha costado entender un poco esto:

      entries.filter(isIntersecting).forEach(accion);

      Lo que creo que esta pasando es que se uso filter ya que este devuelve un array cuando una condición se cumple, en este caso isIntersectiing retorna falso o verdadero. entonces con for each recorremos ese array con las las intersecciones del observador que fueron true, y le hacemos un console.log que muestre que el observador detecto una intersección. Entonces el for Each no se usa si no que solo es por efectos de visualización?

        Yefri Enmanuel Encarnación Jiménez

        Yefri Enmanuel Encarnación Jiménez

        student•
        hace 5 años

        Exacto es tal como dices, .filter para que según la condición que le pasemos este nos retorne un array de valores que cumplieron con esa condición, y a ese array es que le hacemos el forEach.

        Jonathan 🦑 Alvarez

        Jonathan 🦑 Alvarez

        teacher•
        hace 5 años

        Hola Alexis!

        Es tal cual como lo describes :D

        También te puedes ayudar debuggeando con breakpoints o haciendo console.log dentro de isIntersecting y de acción para comparar que ahí allí

      Alexis Toro Navarro

      Alexis Toro Navarro

      student•
      hace 5 años

      Si te da este error Uncaught SyntaxError: Cannot use import statement outside a module debes colorcar

      type="module"

      En la etiqueta script

        Efraín Hernández García

        Efraín Hernández García

        student•
        hace 5 años

        Mil gracias bro!

      Max Andy Diaz Neyra

      Max Andy Diaz Neyra

      student•
      hace 4 años

      Dejo el codigo de la clase para quien prefiera copiarlo:

      const isIntersecting = (entry)=>{ return entry.isIntersecting // true si esta dentro de la pantalla } const accion = (entry)=>{ const nodo = entry.target; console.log('holis'); observer.unobserve(nodo); } const observer = new IntersectionObserver((entries)=>{ entries.filter(isIntersecting).forEach(accion); }); export const registerImage = (image) =>{ // IntersectactionObservador -> observer(image) observer.observe(image); }
        Jairo Alexander Chocontá Bejarano

        Jairo Alexander Chocontá Bejarano

        student•
        hace 3 años

        ¡Gracias por compartir!. Me faltaba completar el action.

      Gutierrez Diego

      Gutierrez Diego

      student•
      hace 4 años

      Me ha parecido super interesante esta clase aunque debo confesar que debo verla varias veces para entre serla por completo....

        Libian María Hernández Gil

        Libian María Hernández Gil

        student•
        hace 3 años

        Yo me sentí muy perdida... tuve que tomar pausa, ver otras fuentes. Aunque el profesor explica muy bien, siento que aquí faltó más detalle sobre el uso práctico, para comprender su importancia.

      Usuario anónimo

      Usuario anónimo

      user•
      hace 5 años

      Algo interesante que realiza el profesor es cuando hace el import de registerImage lo hace por medio de una exportación nombrada , lo que quiere decir es que al momento de importarla en cualquier otro módulo, se tiene te importar tal y como ha sido definida

        Stanley Melgar

        Stanley Melgar

        student•
        hace 4 años

        Correcto, las diferentes maneras de exportar código en JS pueden verlo en el curso de ECMAScript+, dicha característica se agregó en ES6.

      Luis Felipe Medina Rodriguez

      Luis Felipe Medina Rodriguez

      student•
      hace 5 años

      en honor de la organizacion jeje

      Bryan Figueroa

      Bryan Figueroa

      student•
      hace 3 años

      La verdad es importante seguir con las rutas de nos brinda platzi, gracias que ya antes vi sobre el interction observer en el curso profesional de api rest y en el curso profesional de javascript, al verlo por tercera vez en este curso me sirvio para terminar de comprenderlo completamente

      Como consejo te sugiero que siempre mires la documentación de mdn cada que no entiendas algo, es realmente muy util usarla
      Brandon Argel Verdeja Domínguez

      Brandon Argel Verdeja Domínguez

      student•
      hace 4 años

      Intersection Observer

      La API Observador de Intersección provee una vía asíncrona para observar cambios en la intersección de un elemento con un elemento ancestro o con el viewport del documento de nivel superior, aquí están las notas en notion, lo más probable es que en los comentarios no se vea muy bien. 😅

      const observer = new IntersectionObserver((entries, observer) => { // El primer parámetro es un arreglo con datos de los nodos que se están observando // * boundingClientRect: Con las propiedades: top, right, bottom, left, width, height, x & y. // * intersectionRatio: Número de 0 a 1, representa cuánto se está intersectando // * intersectionRect: Las mismas propiedades que boundingClientRect, pero sólo de lectura. // * isIntersecting: Booleano que dice si el nodo está dentro del área del observer // * isVisible: Bolleano para el intersectionObserver v2 *Necesita opciones extra para funcionar y no es del todo soportado* // * rootBounds: Las mismas propiedades de boundingClientRect pero del observer, sólo lectura // * target: El nodo al que se está observando // * time: Tiempo en milisegundos que se ha estado observando console.log(entries); // El segundo parámetro es el observer con las opciones que le daremos: root, rootMargin, threshold. console.log(observer); }, { root: nodo, // Si quieres observar un nodo en específico, por defecto null rootMargin: "10px", // Hace el área del observador 10 pixeles más grande para todos los lados (Funciona como en CSS) threshold: 1, // Número de 0 a 1 que indica cuánto del elemento debe estar en el observer para ser considerado isIntersecting // Opciones requeridas para usar isVisible para v2 trackVisibility: true, // Para activar la visibilidad delay: 100, // mínimo 100 );
      Chrystian Fabian Lozano Ramirez

      Chrystian Fabian Lozano Ramirez

      student•
      hace 5 años

      Que buen curso <3

      Cristhian Franco

      Cristhian Franco

      student•
      hace 5 años

      Una vez creado el observador recibe una función callback (esta se ejecuta cuando los objetos a observar cumplen con las condiciones establecidas) y opciones que configuran el comportamiento de este.

      **- root: ** El elemento que es usado como viewport para comprobar la visibilidad de elemento target. Este debe ser el padre del target a observar, por defecto en la configuración el root será el body o navegador.

      - rootMargin: Margen alrededor del elemento root. Este es configurado tal como la propiedad en css (top, right, bottom, left). Nos ayuda a que la función callback se ejecute tomando en cuenta los pixeles del margen.

      - threshold: Recibe un array de valores del 0 al 1, estos representan el porcentaje de visibilidad, si queremos que la función callback se ejecute justo cuando el objeto es visible debemos usar 0, si quisiéramos que el callback se ejecute cuando tengamos un 50% de visibilidad usamos 0.5.

      let options = { root: document.querySelector('#scrollArea'), rootMargin: '0px', threshold: 1.0 } let observer = new IntersectionObserver(callback, options);

      Fuente: https://developer.mozilla.org/es/docs/Web/API/Intersection_Observer_API#c%C3%B3mo_se_calcula_la_intersecci%C3%B3n

      Sebastian Heredia

      Sebastian Heredia

      student•
      hace 5 años

      Gracias dislexia!! JAJAJA

      Yohesky Pimentel

      Yohesky Pimentel

      student•
      hace 4 años

      Cual seria la diferencia de hacer el filter asi:

      entries .filter(item => isIntersection(item))

      A diferencia de como la hace el profesor?

        Jonathan 🦑 Alvarez

        Jonathan 🦑 Alvarez

        teacher•
        hace 4 años

        Hola Yohesky! . Desde un punto práctico no hay diferencia, ambas funcionan igual :D . Desde el punto de vista técnico, es innecesario. Pues estas creando una función adicional para pasarle item a isIntersection.

      Andrés Castellanos

      Andrés Castellanos

      student•
      hace 4 años

      ¿Deberiamos crear solo un observador?

      mi implementación

      cuando implementé el constructor del intersectionObserver lo hice así:

      const observer = new IntersectionObserver((entries)=>{ const entry = entries.pop(); if(entry.isIntersecting){ action(entry); } });

      En el curso estamos creando un observador cada vez que creamos una imagen y esta la agregamos a sus targets. Entonces, nunca un observador va a tener más de una entry (imagen / target), por lo que no tiene sentido trabajar con una lista de entries, por fines de aclarar el código mejor trabajar las entries como lo que son una sola. ¿no?

      Parece ser que la api está construida de tal manera que uses solo un observador y agreguemos varios nodos target, lo que me lleva a preguntarme: ¿La manera en la que los estamos implementando en el curso es errónea? lo más seguro es que mi intuición esté equivocada. agradezco una respuesta.

        Jonathan 🦑 Alvarez

        Jonathan 🦑 Alvarez

        teacher•
        hace 4 años

        Andrés muy buena tu observación! :D

        Acabas de aplicar event delegation, se puede tomar mucho más lejos y tener un sólo observer desde el Body para todo lo que necesite observer – pero eso ya es otro nivel, generalmente así lo hacen librerías como React/Vue/Angular por nosotros.

        Para el ejemplo no tiene nada de malo crear varios observer por la simple razón que el rendimiento no se afecta por el número de imágenes.

    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