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 examen
    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