CursosEmpresasBlogLiveConfPrecios

Operaciones en lote

Clase 11 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
    Alex Maldonado

    Alex Maldonado

    student•
    hace 5 años

    Más info sobre Spread Operator (Operador de propagación)

    https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Spread_operator

    Ee3PlLlUMAARqT5.jpg
      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Super este resumen del Spread Operator

      Orangel Gonzalez

      Orangel Gonzalez

      student•
      hace 4 años

      Con esto ahora si q entiendo mucho mas ...spread operator. Gracias por el aporte 👍🏻

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher•
    hace 5 años

    ¿Qué es el Spread Operator?

    Si te causa duda esto, no te preocupes, aquí te lo explico:

    El spread operator trabaja con arreglos y objetos, cuando lo pasamos en la llamada a una función, lo que hará es deconstruir ese arreglo y lo pasará como parámetros individuales para la función... aquí un ejemplo para que me entiendas:

    function funcionQueRecibeTresParametros(param1, param2, param3) { // code... } // La forma normal de llamarla sería: funcionQueRecibeTresParametros(1, 2, 3) // Pero, ¿qué pasa si tengo un arreglo que contiene esos 3 parámetros? const arregloDeParametros = [1, 2, 3] // Bueno, pues el spread operator puede deconstruir ese arreglo y poner cada elemento en donde irían mis parámetros :D! funcionQueRecibeTresParametros(...arregloDeParametros) // Eso sería equivalente a esto: funcionQueRecibeTresParametros(arregloDeParametros[0], arregloDeParametros[1], arregloDeParametros[2])

    Esto es muy útil cuando tenemos demasiados valores, recuerda, mientras menos modifiques el DOM, más eficiente será tu programa, y recordemos que tenemos a append() que nos permite insertar múltiples elementos en el DOM en una sola llamada, ¡aprovechémoslo! . Dato curioso: . En algunos frameworks de JavaScript como Vue, existe una cosa llamada el Virtual DOM, no es más que un objeto JavaScript que simula al DOM real, al menos en Vue, esto tiene un proxy que está observando por cambios en ese Virtual DOM para reaccionar y renderizar solo una pequeña parte en el DOM (en lugar de reescribirlo completamente)

      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Muy buena explicación, me ha quedado claro. Gracias.

      Alexis Steven Valderrama

      Alexis Steven Valderrama

      student•
      hace 5 años

      Wow excelente resumen, y dato interesante, en el curso de Fundamentos de JS se menciona que el spread operator lo que hace es duplicar ese objeto o array para evitar modificar los valores que están en el array que se usó. Este tema es muy importante, ya que en frameworks como React, casi nunca queremos modificar el array u objeto original, sino que queremos dejar sus valores por default y trabajar con el duplicado. :)

    Fernando Quinteros Gutierrez

    Fernando Quinteros Gutierrez

    student•
    hace 5 años

    ⏩ Operaciones en lote

    Apuntes

    • Realizar mutaciones en el DOM tiene un costo
    • Cuando usamos frameworks y liberáis lo que más cuesta en estas librerías es estar haciendo operaciones en el DOM
    • Entre menos operaciones realicemos en el DOM especialmente escribir y eliminar cosas más rápidas sera el website

    Ejemplo: Escribir 100 inputs


    🙅‍♂️ No optimo

    for(let i = 0; i < 100; i++){ const node = document.createElement("input"); document.body.appendChild(node); // Modificamos 100 veces }

    👨‍💻 Optimo

    const nodes = []; for(let i = 0; i < 100; i++){ const node = document.createElement("input"); nodes.push(nodes) } document.body.append(...nodes); // Modificamos 1 sola vez

    RESUMEN: Mientras menos modificaciones hagamos en el DOM mayor sera el rendimiento del website

      Camilo Gonzalez

      Camilo Gonzalez

      student•
      hace 5 años

      Gracias por el aporte. Se te fue una s de mas en el parentesis del push, seria

      nodes.push(node)
    fermin martin

    fermin martin

    student•
    hace 5 años

    Hola! 😃 Un pequeño tip: Para hacer un salto de línea cuando estás en la consola del navegador: Shift + Intro

    Andrés D Amelio

    Andrés D Amelio

    student•
    hace 5 años

    Operaciones en lote

    Si bien podemos manipular el DOM siempre que podamos, operaciones que conlleven a creación, modificación o eliminación de nodos generan un costo en el rendimiento de nuestro sitio web, por lo que mientas menos operaciones hagamos en el DOM nuestro sitio responderá de forma más rápida. Un ejemplo claro es cuando queremos insertar muchos elementos en nuestro DOM, supongamos que tenemos una lista de registros y queremos agregar 100 items nuevos, veamos como podríamos realizarlo

    // Obtenemos la tabla const lista = document.querySelector(".items"); //Insertamos 100 registros for(let iter=1; iter<=100; iter++) { const item = document.createElement("li"); item.textContent = `Item ${iter}`; lista.appendChild(item); }

    Como ven obtuvimos la lista que mutaremos, luego realizamos el ciclo donde en cada iteración iremos creando un nuevo elemento li, que iremos insertando inmediatamente a la lista. Esto en términos de sintaxis, lógica y sentido esta bien, pero hay un pequeño detalle y son la cantidad de operaciones que se están realizando en el DOM, cuando ejecutamos appendChild obligamos al DOM a que se actualice, y cuando son muchos registros afecta la carga. Pero esto lo podemos solucionar de una forma más óptima donde haremos lo mismo pero haciendo una única actualización en el DOM, veamos como

    // Obtenemos la tabla const lista = document.querySelector(".items"); // creamos un auxiliar para guardar los elementos creados let items = []; //Insertamos 100 registros for(let iter=1; iter<=100; iter++) { const item = document.createElement("li"); item.textContent = `Item ${iter}`; // Insertamos el item en el auxiliar items.push(item); } // Ahora realizamos la actualización en el DOM lista.append(...items);

    Veamos el tiempo que tarda en ejecutarse cada fragmento de código, para esto usaremos el console.time y console.timeEnd que nos permite cronometrar el tiempo que tarda en ejecutarse ciertas instrucciones.


    appendChild


    appendChild.png

    append


    append.png

    Como podemos ver, usando appendChild obtuvimos un mayor tiempo de ejecución, esto quizás parece poco, pero ¿Que pasaría si son 10 mil elementos los que tenemos que agregar? ahí si se empiezan a notar diferencias considerables, y siempre hay que tomar en cuenta que mientras menos tarde es muchísimo mejor.

    Daniloo Morales

    Daniloo Morales

    student•
    hace 5 años

    La regla de oro Reducir al máximo las operaciones con el DOM, con métodos que involucren escribir, modificar y eliminar. así tendremos un mejor performance de nuestra aplicación! ⭐⭐⭐⭐⭐

      Jonathan 🦑 Alvarez

      Jonathan 🦑 Alvarez

      teacher•
      hace 5 años

      Exacto!

    Juan Gui Arenas

    Juan Gui Arenas

    student•
    hace 4 años

    Mi mente despues de esta clase :O :O

    mente.png
      Luis Fernando Rodriguez Boett

      Luis Fernando Rodriguez Boett

      student•
      hace 3 años

      Literalmente xD

    Carlos Esteban León Pinilla

    Carlos Esteban León Pinilla

    student•
    hace 5 años

    super! Sin embargo se me hizo extraño que no hablara de los document fragments. Estos nos permiten crear los nodos en memoria guardandolos todos en un document fragment y al final insertando el document fragment con todos los nodos, por ejemplo:

    te.png

    Esto me renderiza 150 párrafos con una sola modificación en el DOM.

    Alfonso Aguilar Grimaldo

    Alfonso Aguilar Grimaldo

    student•
    hace 5 años

    He visto el curso y hasta aquí me surge la duda, ¿cuál es el propósito de manipular el DOM en un caso práctico o un caso de la vida laboral?

      Jonathan 🦑 Alvarez

      Jonathan 🦑 Alvarez

      teacher•
      hace 5 años

      Hola @PongoAG

      Una muy buena duda!

      Acá hay unos ejemplos reales:

      • Cuando estás en Facebook, haces scroll hasta el final y puff se carga más contenido.
      • Cuando estás chateando y sin refrescar la página, puff aparece un nuevo mensaje.

      Eso es manipulación del DOM.

      En general: Todo lo dinámico, todo el movimiento que sucede en una página es porque el DOM se manipula de una forma u otra.

      Alfonso Aguilar Grimaldo

      Alfonso Aguilar Grimaldo

      student•
      hace 5 años

      Gracias Jona, ahora entiendo el funcionamiento y la importancia sobre aprender del DOM

    Sebastian Gonzalez

    Sebastian Gonzalez

    student•
    hace 5 años

    Para tener una buena optimizacion de la pagina "en especial si hay mucho contenido" lo mejor es manipular el DOM lo menos posible, podemos usar alternativas como usar arrays u objetos para que con pocas "llamadas" al DOM tengamos el mismo resultado que haciendo miles de llamadas, esto nos da mayor rendimiento y optimizacion

    Juan Esteban Velez Muñoz

    Juan Esteban Velez Muñoz

    student•
    hace 5 años

    Tambien podria hacerse con map

    const n = 100 const nodos = [...Array(n).keys()] const mapNodes = nodos.map(x => document.createElement('input')) document.body.append(...mapNodes)
    Juan Gui Arenas

    Juan Gui Arenas

    student•
    hace 4 años

    Spread Operator tambein sirve para unir 2 o mas objetos, Array y para traer solo los datos que necesitemos del Objeto o Array

    Es muy poderoso :D

    Santiago Reynoso Dunjo

    Santiago Reynoso Dunjo

    student•
    hace 4 años

    Algo interesante de leer es la Web Api Document Fragment. Cuando modificamos al documento insertándole nodos, por ejemplo agregándole 100 inputs, estamos recargando el árbol del DOM 100 veces. Si utilizamos esta Web Api, básicamente creamos un pedacito de documento al cual podemos agregarle todos los nodos que queramos y todo esto sin afectar al documento original. Luego, una vez finalizadas las operaciones, podemos agregar este fragmento directamente al DOM. Ejemplo MDN: HTML

    <ul id="list"></ul>

    JavaScript

    const list = document.querySelector('#list') const fruits = ['Apple', 'Orange', 'Banana', 'Melon'] //Creamos un nuevo fragmento de documento const fragment = new DocumentFragment() fruits.forEach((fruit) => { let li = document.createElement('li') li.innerHTML = fruit //Agregamos las frutas al fragmento creado fragment.appendChild(li) }) //Agregamos el fragmento al Document Object Model, lo recargamos 1 vez. list.appendChild(fragment)
    FELIX MIRANDA TERAN

    FELIX MIRANDA TERAN

    student•
    hace 5 años

    Pregunta inocente: ¿como pasar a la siguiente linea en la consola sin ejecutar el codigo y mantener la identación?

      Nilson Diaz

      Nilson Diaz

      student•
      hace 5 años

      Hey ! Puedes hacerlo presionando shift+ Enter , aunque en la consola tendras que indentar tu mismo

      Gabriel Gomez

      Gabriel Gomez

      student•
      hace 5 años

      Hola, eso lo puedes hacer con shift + enter. O al menos eso me sirve a mí en google chrome.

    Sebastián Buitrago

    Sebastián Buitrago

    student•
    hace 5 años

    hablando de que manipular el dom afecta el rendimiento, cuanto mas lo afecta crear uno virtual ya que normalmente los frameworks trabajan asi, y aunque no entiendo porque los frameworks no manipulan el dom directamente

      Jonathan 🦑 Alvarez

      Jonathan 🦑 Alvarez

      teacher•
      hace 4 años

      Buenísima pregunta @jasba24!

      Precisamente por eso se utiliza la estrategia del Virtual DOM.

      Como hacer operaciones en el DOM es tan costoso, lo que hace el Virtual DOM es recopilar todas las actualizaciones posibles (batch update) para encontrar el número mínimo de operaciones que logran ese resultado.

      De esa forma se garantiza que cada que se manipula el DOM, el framework/ librería lo hace de la forma más óptima posible.

      Sebastián Buitrago

      Sebastián Buitrago

      student•
      hace 4 años

      Gracias por responder profe,

    Carlos Rubén Díaz Gutiérrez

    Carlos Rubén Díaz Gutiérrez

    student•
    hace 3 años

    ¿Por qué en el primer ejemplo se usa appendChild y en el segundo append?

      Edgardo Andres Vargas Saenz

      Edgardo Andres Vargas Saenz

      student•
      hace 3 años

      Hola carlosrubendg, recordemos que hay una diferencia entre appendChild y append.

      • appendChild es una función del DOM, mientas que append en una función de JavaScript Para que entiendas mejor, imagina que quieres insertar algo dentro de un div desde tu HTML.
      document.getElementById("div").append("Hello");
      • Ahora que pasa si intentas hacer eso mismo, pero con appendChild
      document.getElementById("div").appendChild("Hello");
      • Tu consola mostrara: Uncaught TypeError: Failed to execute ‘appendChild’ on ‘Node’: parameter 1 is not of type ‘Node’.
      • ¿Por qué? Porque la función appendChild necesita un elemento como parámetro.
      • Tú no puedes hacer esto
      document.getElementById("div").appendChild("<p></p>");
      • Pero tu si puedes hacer esto
      const p = document.createElement("p"); document.getElementById("div").appendChild(p);
    Miguel Angel Reyes Moreno

    Miguel Angel Reyes Moreno

    student•
    hace 5 años

    Operaciones en lote

    Hacer operaciones en el DOM es algo muy costoso. Entre menos operaciones hagamos en el DOM especialmente escribir y eliminar , más rápida será nuestra operación.

    Ejemplo, agregar 100 inputs al final de body.

    Forma NO óptima: (modificamos el DOM 100 veces)

    for (let i = 0; i<100; i++){ const node = document.createElement('input') document.body.appendChild(node) }

    Mejor forma: (modificamos el DOM 1 vez)

    const nodos = [] for (let i = 0; i<100; i++){ const node = document.createElement('input') nodos.push(node) } document.body.append(...nodos)

    Documentación de operador de propagación

    Luis Fernando Rodriguez Boett

    Luis Fernando Rodriguez Boett

    student•
    hace 3 años

    Sabia que modificar muchas veces en el DOM tenia un precio, pero nunca imaginé que el costo podría ser alto

    Agradezco mucho esta clase porque ayuda a aprender más sobre rendimiento y optimización :star2:.

    Jesús David Mejía Orozco

    Jesús David Mejía Orozco

    student•
    hace 3 años

    Spread Operator

    Vamos a ver el uso del spread operator para pasar un array a una lista de argumentos. Esto puede ser muy útil en casos donde tenemos que pasar una lista de argumentos (no un array) a un método/función.

    Antes de comenzar es importante resaltar el spread operator fue incluido en la nueva versión de Javascript ES6 y ya funciona en todos los navegadores.

    let numeros = [4, 16, 25, 2, 45, 8]; let numeroMayor = Math.max(numeros); console.log(numeroMayor); // NaN

    Observamos que el valor de la variable numeroMayor es NAN, esto es porque el método max() puede recibir una lista de argumentos y no le podemos pasar un array.

    Entonces podríamos hacer los siguiente:

    let numeroMayor = Math.max(4, 16, 25, 2, 45, 8); console.log(numeroMayor); // 45

    Ahora sí podemos acceder al número más alto de la lista de argumentos. De todos modos podemos mejorar este código gracias al spread operator.

    Veamos cómo hacerlo!

    let numeros = [4, 16, 25, 2, 45, 8]; let numeroMayor = Math.max(...numeros); console.log(numeroMayor); // 45

    Al anteponer los tres puntos que representan al spread operator transformamos la variable numeros (que en el ejemplo representa un array con números) en una lista de argumentos, y es por ello que podemos acceder al número mayor del array numeros. Es como si le quitáramos los corchetes ( “[]” ) al array.

      Luis Alberto Ramirez Salas

      Luis Alberto Ramirez Salas

      student•
      hace 3 años

      Me encanto tu aporte !

    Carlos Rodríguez

    Carlos Rodríguez

    student•
    hace 4 años

    Lo u'nico que no me gusta del profe es que no utiliza ";" punto y coma al finalizar la línea en js!

      Carlos Rafael Córdova Flores

      Carlos Rafael Córdova Flores

      student•
      hace 4 años

      Cuál es el inconveniente ? 😮

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 4 años

      @carloscdev es algo subjetivo! A mi me gusta los ";"

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