David Flores
ProfesorCarlos Eduardo Diaz Polanco
Alex Leonardo Rodriguez Carvajal
¿Qué es el método pushState?
El método pushState es esencial para el manejo de la historia de navegación en aplicaciones web. Pertenece al objeto history, el cual a su vez está contenido en el objeto window del navegador. Este método nos permite modificar el historial de la sesión del navegador sin recargar la página. Así, se puede alterar el URL que se muestra al usuario y actualizar el estado de la aplicación de forma dinámica.
¿Cuáles son las propiedades de pushState?
El uso de pushState implica proporcionar tres propiedades clave:
State Object (data): Aquí guardamos los datos que necesitamos preservar en este movimiento. Por ejemplo, si queremos rastrear una acción del usuario como "movimiento", se incluiría en esta propiedad.
Title (title): Aunque se incluye como propiedad, actualmente los navegadores suelen ignorarla. Sin embargo, es buena práctica definir un título que permita identificar de forma amigable el estado actual en el historial.
URL Path (path): Este indica la ruta a la cual deseamos dirigirnos. Es crucial, pues modifica el URL que aparece en la barra de direcciones del navegador, creando la ilusión de una navegación entre páginas diferentes.
window.history.pushState({data: 'movimiento'}, 'titulo', '/nueva-ruta');
¿Cómo se integra pushState en el navegador?
Para experimentar con pushState, puedes abrir la consola del navegador. Esta ofrece un acceso ágil para verificar el comportamiento del objeto history:
F12 para abrir las herramientas de desarrollo.Aquí puedes visualizar la estructura del objeto history:
console.log(window.history);
Observarás propiedades como el tamaño del historial de navegación (length), útiles para verificar la cantidad de páginas por las que el usuario ha navegado durante la sesión actual.
Un ejemplo práctico con Platzi
Para comprender mejor el uso de pushState, sigamos un ejemplo interactivo en Platzi:
platzi.com/clases y abre la consola.window.history, verificamos que el historial tiene un tamaño length inicial.pushState:window.history.pushState({data: 'movimiento'}, 'titulo', '/');
Al ejecutar este código, notarás el cambio inmediato en el URL. Este tipo de interacción es clave para crear rutas personalizadas en nuestras aplicaciones, asegurando que el interfaz de usuario responda de manera dinámica sin recargar la página.
¿Por qué es importante para el desarrollo web?
El control sobre el history de una aplicación web es fundamental cuando se busca implementar un enrutador cliente-side en una aplicación de una sola página (SPA). Este control permite optimizar la experiencia del usuario, haciendo que las transiciones entre vistas sean más fluidas y eficientes.
Implementar pushState eficazmente ofrece a los desarrolladores una herramienta poderosa para mejorar la experiencia del usuario, y al mismo tiempo, construir aplicaciones robustas y coherentes. ¡Continúa aprendiendo y explorando estas capacidades para sacar el máximo provecho a tus proyectos web!
David Flores
ProfesorCarlos Eduardo Diaz Polanco
Alex Leonardo Rodriguez Carvajal
Aarón Fabricio Santa Cruz Valdez
Diego Rubio
Sergio Estrella
ProfesorPlatzi Team
Jimmy Buriticá Londoño
Wladimir Rocha
Ricardo Celis
ProfesorSebastián Buitrago
Carlos Eduardo Diaz Polanco
Joel Vicente Nieto Gómez
Andre Huaman Yovera
Francisco Javier Araujo de la Garza
Gary Barzola Pesantes
Gildo Vargas
Orlando Flores Huanca
Kelly Jesus Salazar Sanchez
Angélica Rocha
Andres Ramirez
Ruth Lucy Campos Huamantica
Marcos Orozco Rios
Cristian Caraballo
Jesus Federico David Herrera
jorge llanque
Sebastián Buitrago
Un poco mas de como funciona history Documentación sobre history
Gracias!
genial!
Al fin comprendí lo que hace el path. Este curso debería estar antes del curso de SPA.
opino lo mismo! fue un dolor hacer SPA sin este curso antes
ALGUNOS MÉTODOS DE HISTORY
window.history.back();
Nos permite ir un paso hacia atrás en nuestro historial
window.history.forward();
Lo opuesto a back(), nos permite movernos hacia adelante en nuestro historial
window.history.go(n);
Nos permite movernos n páginas. Por ejemplo, si n=-1 nos iremos una página atrás. Por otro lado, si n=1, iremos una página hacia adelante. Y si n=0, se recargará la página actual.
window.history.length;
Nos devolverá el número de páginas en nuestro stack de historial
pushState(estado,titulo,url)
Se encarga de añadir una entrada al stack de nuestro historial. Estado es el objeto al cual esta asociado con la nueva entrada al historial creada. Título, de momento es ignorado la mayoría de las veces. Url es la ruta que será añadida a la nueva entrada de nuestro historial
replaceState(estado,titulo,url)
Trabaja de la misma manera que pushState() Con la diferencia que modifica una entrada, en vez de crear una nueva.
history.state;
Nos da el estado actual de nuestro historial
Fuente: https://developer.mozilla.org/es/docs/DOM/Manipulando_el_historial_del_navegador
Excelente aporte compañero 🙌
Bien por la explicación
Magnífico
Gracias Wladimir!
jajajaaj solo es un meme
El método pushState()
pushState() toma tres parámetros: un objeto estado, un título (el cual es normalmente ignorado) y (opcionalmente) una URL. Vamos a examinar cada uno de estos tres parametros en más detalle:
##Object estado El objeto estado es un objeto JavaScript el cual esta asociado con la nueva entrada al historial creada por pushState(). Cada vez que el usuario navega hacia un nuevo estado, un evento popstate event se dispara, y la propiedad state del evento contiene una copia del historial de entradas del objeto estado.
El objeto estado puede ser cualquier cosa que puedas pasar a JSON.stringify. Dado que Firefox guarda los objetos estado en el disco del usuario para que puedan ser restaurados después de que el usuario reinicie su navegador, se ha impuesto un tamaño límite de 640K caracteres en representación JSON de un objeto estado. Si pasas un objeto estado cuya representación es más larga que esto a pushState(), el método arrojará una excepción. Si necesitas más espacio, se recomienda usar sessionStorage y/o localStorage.
##Título Firefox actualmente ignora este parámetro, aunque podría usarse en el futuro. Pasar una cadena de caracteres vacia aquí podría asegurar estar a salvo de futuros cambios en este método. Alternativamente podrías pasar un título corto del estado hacia el cual te estás moviendo.
##URL La URL de la nueva entrada al historial está dada por este parámetro. Recuerda que el browser no intentará cargar esta URL después de llamar a pushState(), pero podría intentar cargar la URL más tarde, por ejemplo, después de que el usuario reinicie su navegador. La nueva URL no necesita ser absoluta; si es relativa, es resuelta relativamente a la actual URL. La nueva URL debe ser del mismo origen que la actual URL. Si no es así, pushState() arrojará una excepción. Este parámetro es opcional; si no se especifica, se tomará la URL actual del documento.
Puedes conseguir la guia completa Aqui!
Orale wow
Capacitación sobre window.history en JavaScript para aplicaciones de una sola página (SPA).
.
El objeto window.history proporciona métodos y propiedades para interactuar con el historial del navegador. Esto es especialmente útil en las SPAs, donde los cambios de contenido se gestionan de forma dinámica sin recargar completamente la página.
.
Aquí tienes una visión general de cómo puedes utilizar window.history en una SPA:
.
window.history.back(): Permite retroceder una página en el historial.window.history.forward(): Permite avanzar una página en el historial.window.history.go(n): Permite navegar a una página específica en el historial, donde n puede ser un número positivo o negativo para avanzar o retroceder varias páginas.
.window.history.pushState(state, title, url): Permite agregar una nueva entrada al historial del navegador sin recargar la página. Puedes especificar un objeto de estado (state), un título (title) y una URL (url) para la nueva entrada.window.history.replaceState(state, title, url): Permite reemplazar la entrada actual en el historial sin agregar una nueva entrada.
.window.onpopstate: Un evento que se dispara cuando el historial de navegación cambia, ya sea por un botón de retroceso/avance o por el uso de pushState() o replaceState(). Puedes agregar un listener para manejar este evento y actualizar el contenido de tu SPA en consecuencia.
.Es importante tener en cuenta que al utilizar pushState() o replaceState(), solo estás cambiando la URL y actualizando el historial del navegador. Para que tu SPA responda a estos cambios y actualice su contenido de forma adecuada, generalmente se utilizan en combinación con un enrutador o gestor de estado, como React Router o Vue Router.
.
Recuerda que esta es solo una introducción básica al uso de window.history en SPAs. La implementación específica puede variar según el framework o biblioteca que estés utilizando.
.
Si tienes más preguntas o necesitas más detalles sobre algún aspecto en particular, no dudes en hacerlo. Estoy aquí para ayudarte.
window.history.pushState({data:'Movimiento'}, 'Title','/');
Saben cuál theme es el que usa el profe en su VSCode ?
Cobalt2, de wes Bos.
Hasta ahora todo bien explicado y comprendido.
Super la explicación del profesor
Entendido :D
algo nuevo y aprendido hoy :D
Entendido
pushState() Toma tres parámetros: un objeto estado, un título (el cual es normalmente ignorado) y la ruta a la cual nos queremos mover.
window.history.pushState({ data: 'Movimiento'}, 'Títle', 'path');
codigo de la clase:
// window.history.pushState // Permite Pasar un nuevo estado a la aplicaciones, parametros: // data: vamos a poner los datos q queremos guardar // titulo: // path: la mas importante aqui se pasa la ruta que nos queros mover window.history.pushState({data:'Movimiento'},'Titulo','/path')
Si la aplicacion es muy grande, digamos "Platzi", ¿Como afecta el concepto de SPA a Platzi? porque para moverme entre secciones si recarga la pagina, otra cosa, ¿Como es el Router en Backend? y si uso SSR ¿Cambia la forma del router?
pushState
Este metodo pertenece a la propiedad history y esta al objeto Window.
window.history.pushState({data:'Movimiento'},'Title','/');
Hasta ahora todo bien
VSC es tan bueno que incluso si alcanzan a ver arriba aparecen los parametros que recibe el metodo que se esta usando, por algo se convirtio en el editor favorito