CursosEmpresasBlogLiveConfPrecios

Creando las imagenes con JavaScript

Clase 22 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

    Viendo ahora
  • 23
    Intersection Observer

    Intersection Observer

    14:21 min
  • 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
    fermin martin

    fermin martin

    student•
    hace 5 años

    🙂Me encanta la honestidad con la que dice que no es necesario aprenderse las fórmulas de memoria

      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Tienes razón, también me ha gustado esto del profesor. En términos generales se nota que Jonathan maneja muy bien el tema y es un excelente profesor.

      Eliseo Ávila

      Eliseo Ávila

      student•
      hace 5 años

      Es un gran profesor 💥

    Diego Grueso

    Diego Grueso

    student•
    hace 5 años

    Chic@s, PARA LOS QUE RECIEN VEN EL VIDEO, una sugerencia, no hay necesidad de calcular un valor random. solo es leer. en la pagina donde extraemos los datos. tiene este texto.

    API is Available: https://randomfox.ca/floof

    ya con eso hacen la petición fetch y les entrega el resultado. no he visto el video pero observe que todos los compañeros calcularon un número random para tener ese dato aleatorio en la imagen

      Sebastián Buitrago

      Sebastián Buitrago

      student•
      hace 5 años

      que dato tan interesante bro

      Fredy A. Yomayuza  Colorado

      Fredy A. Yomayuza Colorado

      student•
      hace 5 años

      y como se utiliza ese dato..?

    Yomar Gutierrez 

    Yomar Gutierrez 

    student•
    hace 5 años

    Reto antes de ver el codigo:

    const getRandomInt = (min, max) => { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; }; const addImage = () => { const app = document.querySelector('#app'); const image = document.createElement('img'); image.width = '320'; image.src = `https://randomfox.ca/images/${getRandomInt(1, 120)}.jpg`; image.alt = 'cute fox'; image.className = 'mx-auto rounded'; const imageContainer = document.createElement('div'); imageContainer.className = 'p-4'; imageContainer.append(image); app.append(imageContainer); }; const adButton = document.createElement('button'); adButton.textContent = 'Agregar Imagen'; adButton.className = 'text-white px-3 py-2 rounded-lg bg-indigo-600 focus:outline-none'; adButton.addEventListener('click', addImage); const cleanButton = document.createElement('button'); cleanButton.className = 'rounded-lg mt-5 px-3 py-2 text-indigo-600 border border-indigo-600 focus:outline-none'; cleanButton.textContent = 'Limpiar'; const container = document.createElement('div'); container.className = 'flex flex-col items-center'; container.append(adButton, cleanButton); const app = document.querySelector('#app'); app.append(container);```
      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Me gusto tu función getRandomInt(), En la función addImage() no es necesario definir de nuevo app, ya que al final del código la estas definiendo global.

      Nazareno Aznar Altamiranda

      Nazareno Aznar Altamiranda

      student•
      hace 5 años

      Tengo una duda, por qué a la funcion random se la multiplica por (max - min + 1) en vez de directamente el max? Es algo que puede cambiar si cambia el minimo?en ese caso, el +1 debería ir siempre o se modifica el numero dependiendo del mínimo?

      return Math.floor(Math.random() * (max - min + 1) + min);

    Víctor Illanes Soto

    Víctor Illanes Soto

    student•
    hace 4 años

    Realizado con ASYNC/AWAIT

    Carlos Eduardo Gomez García

    Carlos Eduardo Gomez García

    teacher•
    hace 5 años

    Dato curioso, la función random() que creamos aquí es la misma función random que vimos en el curso gratis de programación básica 👀. . De nuevo me gustaría recordar que no es necesario agregar un mountNode = document.querySelector("images"), esto porque HTML al ver que existe un id llamado images automágicamente crea una variable dentro de JavaScript con ese nombre :D. . Les dejo el código de esta clase: . Creando imágenes con JavaScript

      Alexis Steven Valderrama

      Alexis Steven Valderrama

      student•
      hace 5 años

      De hecho me hiciste recordar que el el curso de fundamentos de JS, también lo enseñaban a hacer. Es muy útil saber como generar contenido aleatorio :)

      Dario Paladines

      Dario Paladines

      student•
      hace 4 años

      Tal cual, yo fui a ver el curso de prog básica para recordar esa función random() y hacerla antes que el profe lo hiciera

    Erick Alejandro Graterol Barico

    Erick Alejandro Graterol Barico

    student•
    hace 4 años

    Problemas tipicos en despliegue o consumos de APIS

    Hay un problema cuando consumes una API y la despliegas en un servidor y es que el servidor al menos en github, no deja que tu API o codigo AJAX obtenga o envie información a sitios no seguros, esto ni siquiera lo sabia, y cuando desplegué mi sitio en github pages me tope con este problema. .

    Como lo solucionas ?

    Muy simple debes de asegurarte de que tu JS obtenga todo via HTTPS, la S es muy importante y lo otro es colocar la etiqueta Meta con su equivalente http-equiv o name tambien es posible, añadir un policy y listo todo quedo !

    <!--Esta etiqueta es muy importante para tu API --> <meta http-equiv= content-security-policy content= upgrade-insecure-requests>
    Melba Indhira Tejada Leonardo

    Melba Indhira Tejada Leonardo

    student•
    hace 5 años

    Por fin ya pienso que la programación es para humanos uff. Pensaba que era para genios.

      Seba Cardoso

      Seba Cardoso

      student•
      hace 4 años

      Los genios son humanos tambien jaja/

    Brayan Ramirez Alzate

    Brayan Ramirez Alzate

    student•
    hace 4 años

    Tenía el código así pero me decía que el resultado de la función era undefined

    const random = () => { Math.floor(Math.random() * (maximun - minimun)) + minimun };

    Luego lo puse como arrow function y funcionó

    const random = () => Math.floor(Math.random() * (maximun - minimun)) + minimun``` Lo que no sé es por qué hay diferencia
    Andres Felipe Pinchao Ramirez

    Andres Felipe Pinchao Ramirez

    student•
    hace 5 años

    APUNTES DE LA CLASE SIN FALTA :)

    //genamos un numero random para crear imagenes aleatorias const maximun = 121; const minimun = 1; const random = () => Math.floor(Math.random()*(maximun - minimun)+ minimun) // creamos la imagen const createImageNode = () => { //creamos el contenedor de imagenes const container = document.createElement('div'); container.className = "p-4"; //creamos la imagen y agregamos las propiedades + el link de la imagen const imagen = document.createElement('img'); imagen.className = "mx-auto"; imagen.width = '320'; imagen.src = `https://randomfox.ca/images/${random()}.jpg`; // agregamos la imagen al contenedor container.appendChild(imagen) //retornamos el container return container }; //guardaremos la imagen en una variable //const nuevaImagen = createImageNode(); //obtenemos el contenedor padre donde estaran todos nuestros elementos const mountNode = document.getElementById('imagenes'); //agregamos las imagenes al contenedor padre //mountNode.append(nuevaImagen, createImageNode()); //creamos una funcion para agregar la imagen cuando damos clic a un boton //obtenemos el boton const addboton = document.querySelector('button'); const addImage = () => { //guardamos la imagen que recibimos retornada de la funcion en una variable const newImage = createImageNode(); //agregamos la imagen al contenedor padre mountNode.append(newImage) } addboton.addEventListener('click', addImage);
    Wilmion Navarrete

    Wilmion Navarrete

    student•
    hace 5 años

    En la funcion random se puede simplificar asi

    const random = (maximo) => { return Math.floor((Math.random()*maximo - 1)+ 1)) }
      Edgar Lopez Arroyo

      Edgar Lopez Arroyo

      student•
      hace 5 años

      Muy buena, tu decides que limite tiene 👍

      Nazareno Aznar Altamiranda

      Nazareno Aznar Altamiranda

      student•
      hace 5 años

      retruco 8)

      const randomNum = max => Math.floor((Math.random()* max -1) + 1);
    José Rodolfo Figueroa Chávez

    José Rodolfo Figueroa Chávez

    student•
    hace 5 años

    Math.random() es una funcion que te retorna un valor entre 0 y 1, para simplificar un poco la fórmula que nos dió el profesor podemos multiplicar el resultado por 122 que es el máximo de imagenes que devuelve el api. Y a ésto le aplicamos el Math.floor() para redondear el resultado.

    Entonces la formula quedaría de ésta forma:

    const random = Math.floor(Math.random() * 122)
      Francisco Javier Pecino Leon

      Francisco Javier Pecino Leon

      student•
      hace 3 años

      no me salen los calculos...

    Erick Alejandro Graterol Barico

    Erick Alejandro Graterol Barico

    student•
    hace 4 años

    Lo que mas me a gustado del Curso.

    Me gusta mucho el Lazy Loading como tecnica de carga y las APIS. Es increíble como se siente someter una API o tener todos esos datos en un solo lugar.

    Con lo que aprendí del curso consumí una API que obtiene información de la pelicula o serie que tu quieras pueden probarla aca. https://erickuu.github.io/api-movie/ . El diseno es algo simple y el responsive design a veces se rompe dependiendo del cel, pero es lo de menos.

    https://devdocs.io https://devdocs.io/dom/

    Juan Esteban Galvis

    Juan Esteban Galvis

    student•
    hace 5 años

    Si quieren usar lo de random directamente existe un paquete en npm que lo hace (más algunas validaciones): https://www.npmjs.com/package/number-random

    Joseph Manuel Salen Pantoja

    Joseph Manuel Salen Pantoja

    student•
    hace 5 años

    Mi código antes de ver la clase 😄 . HTML

    <div id="imagesApp"> </div>

    . JavaScript

    const URL = "https://randomfox.ca/floof/"; const imagesApp = document.getElementById("imagesApp"); const btnAdd = document.getElementById("btn-add"); const getImage = async () => { const res = await fetch(URL); const data = await res.json(); return data.image; }; const addImg = async () => { const container = document.createElement("figure"); container.className = "p-4"; const img = document.createElement("img"); img.className = "mx-auto fox-img"; img.src = await getImage(); container.appendChild(img); imagesApp.appendChild(container); }; btnAdd.addEventListener("click", addImg);

    . Lo único que añadí de CSS jeje

    .fox-img { width: 320px; }
    Melba Indhira Tejada Leonardo

    Melba Indhira Tejada Leonardo

    student•
    hace 5 años

    Me da este error:![](

    Screenshot error del DOM2021-03-13 214555.png

      Jonathan 🦑 Alvarez

      Jonathan 🦑 Alvarez

      teacher•
      hace 5 años

      Hola @IndhiraTejada!

      Qué tienes dentro de tu index.js? Al parecer hay un error de sintaxis allí 🤔

      Melba Indhira Tejada Leonardo

      Melba Indhira Tejada Leonardo

      student•
      hace 5 años

      Gracias, Profe, lo chequearé.

    Jean Bustamante

    Jean Bustamante

    student•
    hace 3 años

    Haciendo pruebas y siguiendo el curso como el profesor indica de guardar los elementos en un array y hacer un solo append, me di cuenta que cuando hacía click en el botón por una segunda vez, se supone que debía mostrar la primera imágen repetida, ya que el array ya tenía un elemento guardado, pero esto no sucedía y después un rato encontré que si no usamos .cloneNode(true), el DOM detecta que es un nodo duplicado y no lo inserta o algo así.

    A pesar de que no quería que se clonaran los nodos para esta práctica, quería saber porqué pasaba eso y me llevó un rato encontrarlo 🧐.

    Hugo Herrera

    Hugo Herrera

    student•
    hace 2 años

    No es necesario crear la funcion random, basta con usar la API de la página. Aquí la solución:

    const baseUrl = 'https://randomfox.ca/floof'; const card = document.getElementById('images'); const addButton = document.querySelector('button'); const newImage = () => fetch(baseUrl) .then(response => response.json()) .then(data => { const imagecontainer = document.createElement('div'); imagecontainer.className = 'p-4'; const image = document.createElement('img'); image.className = 'mx-auto'; image.width = '320'; image.src = data.image; imagecontainer.appendChild(image); card.append(imagecontainer); }); addButton.addEventListener('click', newImage); ```const baseUrl = 'https://randomfox.ca/floof'; const card = document.getElementById('images'); const addButton = document.querySelector('button'); const newImage = () => fetch(baseUrl) .then(response => response.json()) .then(data => { &#x20; &#x20; const imagecontainer = document.createElement('div'); &#x20; imagecontainer.className = 'p-4'; &#x20; const image = document.createElement('img'); &#x20; image.className = 'mx-auto'; &#x20; image.width = '320'; &#x20; image.src = data.image; &#x20; imagecontainer.appendChild(image); &#x20; card.append(imagecontainer); &#x20; &#x20; }); addButton.addEventListener('click', newImage);
    Wilker Vivas

    Wilker Vivas

    student•
    hace 2 años

    Mi solucion antes de ver el video

    const boton = document.getElementById("boton") const raro = function(){ const numeroAlea = Math.round(Math.random() * 122) return numeroAlea } function accion() { const contenedor = document.createElement("div"); contenedor.className = "p-4" const image = document.createElement("img"); image.className = "mx-auto"; image.src = `https://randomfox.ca/images/${raro()}.jpg`; image.width = "320" padre.appendChild(image); } boton.addEventListener("click", accion)
    Kevin Isaí Santiago López

    Kevin Isaí Santiago López

    student•
    hace 3 años

    Asi resolvi el reto🦊:

    localhost_8080_ (1).png

    • Guardar la api y el padre
    // guardamos la API en una variable const API = 'https://randomfox.ca/floof'; // obtenemos la app const appNode = document.querySelector('#app');
    • Convertimos los datos a formato json
    // función para consultar api async function fetchData(urlAPI) { const response = await fetch(urlAPI); const data = await response.json(); return data; }
    • Creamos el template de las imagenes y lo agregamos al DOM
    async function getImage(urlAPI) { const data = await fetchData(urlAPI); // crear imagen const image = document.createElement('img'); image.src = await data.image; image.width = '320'; image.className = 'mx-auto'; // crear imgContainer const imgContainer = document.createElement('div'); imgContainer.className = 'p-4'; imgContainer.append(image); // se agrega al padre appNode.append(imgContainer); }
    • Creamos el boton y le asignamos su evento
    // crear boton const addImg = async ()=> { // Texto y sus estilos const txtBoton = document.createElement('span'); txtBoton.textContent = 'Cargar imagen' txtBoton.className = 'relative px-5 py-2.5 transition-all ease-in duration-75 bg-white dark:bg-gray-900 rounded-md group-hover:bg-opacity-0' // boton y sus estilos const boton = document.createElement('button'); boton.className = 'relative inline-flex items-center justify-center mt-4 p-0.5 mb-2 mr-2 overflow-hidden text-sm font-medium text-gray-900 rounded-lg group bg-gradient-to-br from-purple-600 to-blue-500 group-hover:from-purple-600 group-hover:to-blue-500 hover:text-white dark:text-white focus:ring-4 focus:outline-none focus:ring-blue-300 dark:focus:ring-blue-800' boton.append(txtBoton); //Crear evento await boton.addEventListener('click', ()=>{getImage(API)}); // agregar al padre appNode.append(boton); } addImg();

    Y listo 🦊

      Edgar Gomez

      Edgar Gomez

      student•
      hace 3 años

      saludos, interesante, gracias por compartir

    Kevin Ramirez

    Kevin Ramirez

    student•
    hace 3 años

    Mi versión del desafío que dejó al comienzo:

    const API = 'https://placekitten.com/g/500/200'; async function fetchData(APIurl) { try { const res = await fetch(APIurl); const data = res.url; return data; } catch (error) { return new Error(error) } } async function getKittyImage(api) { const app = document.querySelector('#app'); const addKitt = document.querySelector('#app button') const container = document.createElement('div'); addKitt.addEventListener('click', async () => { const res = await fetchData(api); const image = document.createElement('img'); image.src = res; image.className = 'mx-auto mb-5'; image.width = '320'; container.append(image); }) app.insertAdjacentElement('beforeend', container); } getKittyImage(API)

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