Para comprender cómo funciona el proceso de ruteo en el cliente, primero debemos entender qué pasa cuando enviamos una solicitud a un servidor, para que esté nos entregue la respuesta que queremos.
En un sitio web sin dinamismo, tenemos múltiples archivos HTML, cada uno de ellos con una ruta correspondiente de acceso, misma que usualmente es igual a la ubicación del archivo en el servidor. El servidor tiene el trabajo de darle lectura a la ruta, y buscar el archivo correspondiente. A este proceso lo llamamos ruteo, y es la forma más básica de ruteo que existe.
En una aplicación web, el proceso de ruteo lo hace un lenguaje de programación, usualmente apoyado de un archivo en el que se definen las rutas, junto con las estructuras de código que darán respuesta a cada ruta, usualmente una función.
Cuando el servidor recibe una petición, el servicio encargado del ruteo, carga el archivo con las rutas definidas, busca la ruta recibida y delega a la función correspondiente el darle respuesta a la solicitud, la función produce la vista, y los links a los archivos necesarios para cargar la página.
la respuesta a la ruta. Este es el ruteo al que usualmente conocemos como server side routing, o ruteo en el servidor. Es el más común y el más tradicional.
Existen algunas deficiencias al routing en el servidor, como por ejemplo, que aunque dos páginas de rutas distintas, usen el mismo archivo de estilos, ambas páginas deben de volver a solicitarlo y volver a cargarlo. En cada navegación entre rutas, el navegador pausa mientras carga la nueva vista, y la despliega. Haciendo que el sitio sea inusable durante estos segundos.
Para mejorar la experiencia de usuario, se produce este concepto de routing desde el cliente, que es, traer toda la lógica de ruteo del server, hacia el cliente. Tal como en el caso del ruteo en el servidor, en el cliente, se define un archivo con las rutas de la aplicación, y qué función se encargará de responder, en el caso de React, es un componente el que se muestra para cada ruta.
Este proceso implica que sea el lenguaje del cliente, JavaScript, quien implemente la lógica necesaria para actualizar la página. Misma que puede verse de una de las dos siguientes formas:
La primera, que se cargue un archivo JavaScript que incluya todas las funciones para actualizar la página. Que al cambiar la página, se use este archivo JavaScript para actualizar la página misma, y sólo se carguen los nuevos recursos solicitados como imágenes, videos, etc.
La segunda, que se cargue una porción de JavaScript por página, y que cuando se navegue hacia otra ruta, se realice una petición AJAX al servidor, para traer otra porción de JavaScript que actualice la página. Todo esto sin recargar la página. A este proceso se le llama code splitting, porque dividimos el código por páginas.
De entre las dos estrategias, la de code splitting suele ser la mejor, porque evita que desde la primera página que visites, descargues todo el código de la aplicación completa. Por otro lado, la estrategia de code splitting, implica que debes tener una estrategia y una herramienta para separar tu código. Webpack puede hacer esto por ti.
Una de las grandes ventajas que nos ofrece el routing en el cliente, es la posibilidad de recargar la página por porciones, en lugar de hacerlo completamente. Esto entre otras cosas nos permite guardar el estado de los elementos que no se actualizan, y únicamente modificar lo que sí. Además de que permite que el usuario pueda continuar interactuando con el sitio, aún cuando una parte esté cargando.
Entre las desventajas del routing en el cliente tenemos que, puede romper la funcionalidad de la página si se deshabilita JavaScript, normalmente, estas tecnologías no están diseñadas para trabajar junto con lectores de pantalla u otras herramientas de accesiblidad. Esta práctica también puede ser más difícil de mantener, porque gran parte de la funcionalidad que el protocolo HTTP y el funcionamiento de la web, dan por defecto, tiene que implementarse desde 0 en el router del cliente.
Si tu aplicación se puede beneficiar de la experiencia mejorada del router en el cliente, y tienen el equipo para solventar las deficiencias, es una gran elección. Continuemos.
-
Módulo 1 | 6 clases
Introducción
expand_more-
play_circle_outline
Clase 1
1.- Introducción al curso de Single Page Apps con React
-
play_circle_outline
Clase 2
Conocimientos previos [Curso React SPA]
-
play_circle_outline
Clase 3
Cómo instalar Node.js en Windows
-
play_circle_outline
Clase 4
Cómo instalar Node.js en Mac
-
play_circle_outline
Clase 5
Configurar el servicio web
-
play_circle_outline
Clase 6
Iniciar el proyecto con create-react-app
-
-
Módulo 2 | 8 clases
Routing en el cliente
expand_more-
play_arrow
Clase 1
Router del cliente
-
play_circle_outline
Clase 2
Configurar react-router v6
-
play_circle_outline
Clase 3
Definir rutas
-
play_circle_outline
Clase 4
Links de navegación
-
play_circle_outline
Clase 5
Rutas anidadas
-
play_circle_outline
Clase 6
Navegación con JavaScript
-
play_circle_outline
Clase 7
Leyendo parámetros
-
play_circle_outline
Clase 8
Ranking de rutas
-
-
Módulo 3 | 13 clases
Autenticación de usuarios
expand_more-
play_circle_outline
Clase 1
Qué es Redux
-
play_circle_outline
Clase 2
Flujo de cambios en Redux
-
play_circle_outline
Clase 3
Terminología en Redux
-
play_circle_outline
Clase 4
Instalar y configurar redux
-
play_circle_outline
Clase 5
Redux devtools
-
play_circle_outline
Clase 6
Mocking de autenticación
-
play_circle_outline
Clase 7
createSlice explicado
-
play_circle_outline
Clase 8
Redux thunks
-
play_circle_outline
Clase 9
Registro de usuarios
-
play_circle_outline
Clase 10
Inicio de sesión
-
play_circle_outline
Clase 11
Cerrar sesión
-
play_circle_outline
Clase 12
Persistencia de datos
-
play_circle_outline
Clase 13
Whitelist y blacklist redux-persist
-
-
Módulo 4 | 10 clases
Consumir servicios web
expand_more-
play_circle_outline
Clase 1
Crear el reducer para videos
-
play_circle_outline
Clase 2
Autenticación del servidor con JWT
-
play_circle_outline
Clase 3
Obtener videos
-
play_circle_outline
Clase 4
Formulario para subida de archivos
-
play_circle_outline
Clase 5
Subida de archivos
-
play_circle_outline
Clase 6
Mostrar videos
-
play_circle_outline
Clase 7
Configurar el reproductor de video
-
play_circle_outline
Clase 8
Mostrar videos individualmente
-
play_circle_outline
Clase 9
Perfil de usuario
-
play_circle_outline
Clase 10
Postear likes en un video
-
-
Módulo 5 | 19 clases
Styled components
expand_more-
play_circle_outline
Clase 1
CSS in JS [React Single Page Apps]
-
play_circle_outline
Clase 2
Fundamentos y configuración de styled components
-
play_circle_outline
Clase 3
Trabajando con props
-
play_circle_outline
Clase 4
Extendiendo estilos de otros componentes
-
play_circle_outline
Clase 5
Props y atributos
-
play_circle_outline
Clase 6
Nesting
-
play_circle_outline
Clase 7
Bloques reusables de CSS
-
play_circle_outline
Clase 8
Configurando un tema
-
play_circle_outline
Clase 9
Layout de la app
-
play_circle_outline
Clase 10
Estilizando la página de videos
-
play_circle_outline
Clase 11
Botones del vídeo
-
play_circle_outline
Clase 12
Navegación del encabezado y del pie de página
-
play_circle_outline
Clase 13
Formulario de inicio de sesión
-
play_circle_outline
Clase 14
Mostrar navegación y footer condicionalmente
-
play_circle_outline
Clase 15
Registro de usuario y rutas condicionales
-
play_circle_outline
Clase 16
Vista de la subida de archivos
-
play_circle_outline
Clase 17
Vista del perfil de usuarios
-
play_circle_outline
Clase 18
Botón para cerrar sesión
-
play_circle_outline
Clase 19
Vista individual de videos
-
-
Módulo 6 | 7 clases
Scroll infinito
expand_more-
play_circle_outline
Clase 1
Los desafíos de implementar scroll infinito
-
play_circle_outline
Clase 2
Configurando Infnite Loader y List
-
play_circle_outline
Clase 3
Mostrar videos en el contenedor de carga infinita
-
play_circle_outline
Clase 4
Paginación de videos
-
play_circle_outline
Clase 5
Integrar paginación con el contenedor de carga infinita
-
play_circle_outline
Clase 6
React Devtools
-
play_circle_outline
Clase 7
Detalles finales de la carga infinita
-
-
Módulo 7 | 4 clases
Deploy a producción
expand_more -
check_circle_outlineMódulo 8
Examen del curso
expand_more-
done_all
Examen
Examen final del curso
-