Carlos David Barco Hurtado
habla mucho, y me parecen muy largas las explicaciones, me gustaria que fuera mas al grano y conciso todo. gracias
Amado Martínez
Exacto
Abraham Gonzalez
Concuerdo contigo
Elegir entre server-side rendering y single-page application define cómo se carga, navega y siente tu aplicación web. Esta decisión de arquitectura frontend impacta velocidad, experiencia de usuario y la forma en que React Router se configura en tu proyecto.
Si estás aprendiendo React o diseñando el flujo de navegación de una app, entender estos dos enfoques te abre los ojos a por qué algunas páginas cargan rapidísimo al inicio y otras navegan sin recargar nunca. Aquí te explico cómo funciona cada uno, sus ventajas, sus costos y cómo se combinan.
¿Qué es el server-side rendering y cómo funciona?
El server-side rendering (SSR) parte de una idea simple: el backend es la madre de todo. Cada vez que haces una solicitud, el backend la recibe y decide qué responder.
En el flujo SSR, el backend te devuelve un documento HTML ya con el contenido insertado. Si entras al blog de Platzi, el servidor arma el HTML con título, imágenes y texto, y tu navegador solo lo renderiza [01:30].
¿Qué es el server-side rendering? Es la estrategia donde el backend genera un HTML completo con datos ya insertados y se lo envía al navegador en cada solicitud. El cliente solo lo muestra.
¿Qué pasa cuando el usuario navega en SSR?
La navegación usa etiquetas a (anchors, links) que disparan el comportamiento normal del navegador: una nueva petición al backend [02:00]. El servidor recibe esa nueva ruta (/about, /blog, lo que sea), genera otro HTML desde cero y lo envía.
Eso significa que cada cambio de ruta es una nueva carga completa. El navegador procesa todo otra vez desde el inicio.
¿Qué es una single-page application y por qué es distinta?
Una single-page application (SPA) usa una sola página HTML para toda la app. El backend te entrega un HTML prácticamente vacío: un div con id="root" y un script enlazado a un archivo JavaScript [03:30].
Ese JavaScript se encarga de todo lo demás. Manipula el DOM, hace consultas a APIs REST, recibe JSON y muestra la información a los usuarios. La comunicación es bidireccional, no un monólogo del backend.
En una SPA, los botones y enlaces ya no usan etiquetas a tradicionales. Cada interacción se escucha con event listeners en JavaScript, se traduce en una consulta a una API y la respuesta se inserta en el DOM sin recargar la página.
¿Qué es client-side rendering y client-side routing?
El client-side rendering es la técnica de renderizar el contenido desde el navegador con JavaScript. El client-side routing es manejar la navegación entre rutas también desde el cliente, sin pedirle al backend un HTML nuevo cada vez [05:00].
¿Qué diferencia hay entre client-side rendering y server-side rendering? En CSR el navegador construye y actualiza el contenido con JavaScript usando un solo HTML. En SSR el backend genera un HTML nuevo por cada ruta solicitada.
Una SPA usa ambas estrategias: un solo HTML, todo el render y la navegación ocurren en el cliente.
¿Cuáles son las ventajas y desventajas de cada estrategia?
Cada enfoque brilla en momentos distintos, así que la decisión depende del tipo de aplicación que estés construyendo.
Ventajas y costos del server-side rendering
Ventajas y costos del client-side rendering
¿Qué es progressive server-side rendering y por qué importa?
La fusión entre ambos mundos se llama progressive server-side rendering. La idea es que el backend genere ese primer HTML completo para una primera carga rápida, y luego la aplicación se transforme en una SPA para la navegación posterior [09:30].
Para lograrlo, React aplica un proceso llamado hidratación: toma el HTML inicial y lo conecta con el JavaScript que controlará la app desde ese momento. Una vez hidratado, cada interacción se maneja con consultas a APIs y manipulación del DOM, no con nuevas cargas del servidor.
Es la mejor estrategia que existe hoy, pero también la más compleja. La hidratación exige que el HTML del servidor coincida con el que JavaScript renderizaría en el cliente. Herramientas como los React Server Components ayudan a optimizar este proceso.
¿Por qué importa esto al usar React Router?
React Router se configura distinto según la estrategia. Si trabajas con una SPA, usarás client-side routing puro. Si tu proyecto usa SSR o progressive SSR, la navegación necesita otro tipo de configuración.
Saber qué estrategia usa tu app es el primer paso para elegir bien las herramientas y evitar comportamientos raros en producción.
Cuéntame en los comentarios qué estrategia usa tu Doomachine: ¿server-side rendering, single-page application con client-side routing, o crees que deberías migrar a otra si empiezas a agregarle rutas?
Carlos David Barco Hurtado
habla mucho, y me parecen muy largas las explicaciones, me gustaria que fuera mas al grano y conciso todo. gracias
Amado Martínez
Exacto
Abraham Gonzalez
Concuerdo contigo
RESUMEN:
La representación del lado del servidor (SSR) y las aplicaciones de página única (SPA) son dos enfoques diferentes para construir aplicaciones web.
SSR es una técnica en la que el servidor genera el HTML para una página web y lo envía al navegador del cliente para ser renderizado. Esto permite que los motores de búsqueda rastreen la página web y mejora el tiempo de carga inicial para los usuarios, pero puede conducir a un rendimiento más lento y una experiencia de usuario menos dinámica.
Las SPA, por otro lado, son aplicaciones web que cargan una única página HTML y actualizan dinámicamente el contenido a medida que el usuario interactúa con la aplicación. Esto proporciona una experiencia de usuario más fluida y receptiva, pero puede dificultar que los motores de búsqueda rastreen la página web y aumentar el tiempo de carga inicial.
Tanto SSR como SPA tienen sus propias ventajas e inconvenientes, por lo que la elección entre los dos depende de los requisitos específicos del proyecto.
David Condori Quispe
SPA y SSR
Fabio Erik Sosa Morinigo
En la APP TODO Machine no utililzamos ninguna API, simplemente hardcodeamos la carga inicial con un patron de diseno. TODO Machine es una 'SPA''.
Max Andy Diaz Neyra
Resumen de la clase: SSR clásico:
SPA
Progressive SSR
David Estiven Aragón Andrade
TodoMachine es una SPA
erick soto huamanhorcco
no me des spoilers pws jaja
Seba Cardoso
Podemos desarrollar una app SSR con el framework . Con esta herramienta no necesitariamos una herramienta de navegacion porque ya la tiene integrada.
Julian Franco
O sea no valdria la pena aprender este curso si no continuar a Next ?
Arturo Mauricio Terceros Beltrán
Por su puesto que vale la pena aprender el curso, cada estrategia tiene su caso de uso. En algunos casos usarás una SPA o en otros NEXTJS
Diego Vergara
Todo Machine, no tiene contenido html en el body enviado por el servidor, y renderiza todo su contenido con javascript desde el inicio de la appliación.
Rubén Ernesto Aragón Gil
Carlos Mauro Cárdenas Fernández
Progressive Server Side Rendering ... creo que deberia ser el objetivo de todo WEB PAGE
brayan zamora
Opino lo mismo!
Juan Carlos Urdiales
Progressive Server Side Rendering me parece la mas acertada en los proyectos, es mas compleja pero la mas optima a mi parecer para la navegacion
Gaston Blanco
Todo machin es Single Page. Y ahora vamos a agregarle Router !! para crear mas rutas.
Client Side Rendering Escucha desde el cliente y solo vuelve a renderizar lo que cambio. Con este metodo podemos renderizar solo los componentes que cambiaron. Dejando cosas como el Header o Footer sin volver a recargar (salvo que reciban algun cambio)
Harold Zurita Simon
SSR vs. Single Page Applications
. Cualquier página web en esencia funciona de esta manera: .
.
En el Server Side Rendering se tiene el siguiente comportamiento:
.
. Por otro lado cuando tenemos navegación el flujo es un poco distinto: .
<a>.
./, sino a una nueva ruta.
..
Eso fue el proceso del SSR. Sin embargo, hay alternativas o mejor conocido como Single Page Application que consiste en:
.
div con Id root, y un script que enlaza a algún archivo con código Javascript.
.SPA siempre se tiene al mismo HTML vacío.
.<a>, sino que lo escuchamos desde Javascript con eventos que ya no nos mandan hacia otra ruta. En su lugar, estos eventos los escuchamos, procesamos y los transformamos en consultas al backend pero por medio de API REST. Los usuarios no se deben de enterar, por lo que solo notan que algo está cargando y de repente se les inserta información por medio de la manipulación del DOM.
..
A esto le llamamos Client Side Rendering.
.
Las SPA solo tienen un HTML y utilizan el Client Side Routing y el Client Side Rendering también. Es decir, se renderizan y hacen la navegación desde el cliente, no desde el backend, el frontend cambia pero no hacemos nuevas consultas al backend para recibir nuevos HTML, sino que dinámicamente manipulamos ese mismo HTML que ya nos dio el backend una sola vez para todas las posibles consultas o interacciones de los usuarios.
.
Ambas tienen sus propias ventajas y desventajas. Por ejemplo el SSR:
.
.
Con el CSR pasa exactamente lo contrario:
.
Loading Skeleton que nos permiten simular que estamos cargando información, mientras hagamos eso podemos realizar la consulta al API REST y meter el contenido que estaban buscando con manipulación del DOM.
.CSR y el Client Side Routing esto es una SPA. El primer rendering puede ser un poco más lento y el backend ya no va a tener que generar un nuevo documento HTML. Nuestra SPA lo que hace es hacer otra consulta al API REST, ese JSON lo transforma en información que podamos utilizar desde Javascript para manipular el DOM. La navegación se vuelve más rápida al utilizar el Client Side Routing.
..
Finalmente, podemos fusionar lo mejor de ambos SSR y SPA. Si hacemos SSR para generar desde el backend el primer documento HTML listo con la primera información que piden nuestros usuarios. Posteriormente, lo que hacemos es tomar este HTML y por medio de hidratación vamos a convertir esto en una SPA, y por medio de javascript empezamos a controlar todo, entonces transformar las interacciones de los usuarios en consultas a una API y mostrarle nuevos resultados.
.
A esto le llamamos Progressive Server Side Rendering que es la mejor estrategia que se puede usar. Sin embargo, para utilizarlo con React se requiere aplicar hidratacióm, dependiendo de cómo lo hagamos, tenemos que hacer que coincida ese documento HTML inicial con el nuevo documento HTML que renderizaríamos otra vez desde Javascript.
.
Sería posible hacerlo si utilizáramos herramienta como los React Server Components, mejorando la velocidad pero requiriendo una mayor complejidad.
.
En conclusión, todos estos son los métodos, formas, los flujos de navegación que puede seguir una aplicación. Con React utilizando React Router tenemos que saber cuál de estas estrategias estamos utilizando, dependiendo de ellas hacer un tipo de navegación u otra, los tipos de navegación dependen de qué estrategia utilicemos.
.
En este caso la aplicación TodoMachine sería una SPA puesto que todo vive en una misma vista, y al principio tenemos un solo documento HTML vacío que vamos manipulando mediante código Javascript.
Ulqernesh Karvenae
considero que es una SPA y ojala pase a ser una Progressive Server Side Rendering, con eso aprendemos lo mejor de los 2 mundos y como fusionarlo
Max Andy Diaz Neyra
Nuestra app TODO machine es un SPA pues empieza con un documento HTML vacio y es el JS quien se encarga de renderizar nuestra app.
Antony Ventura
Respondiendo a la pregunta de la clase:
To Do Machine es una SPA (Single Page Application) ya que en primera instancia recibimos un HTML vacío (#root) donde luego se renderiza y manipula el DOM según la interacción del usuario.
Alberto Domingo Basabe Acurero
TodoMachine es una SPA (Single Page Application) el primer HTML que carga son 2 div uno con ID = "root" y otro con id= "modal" después crea todo contenido. entonces TodoMachine utiliza Client-side rendering
brayan zamora
Nery Alberto Cano Ortigoza
Actualmente es CSR ya que el back-end solo nos brinda el html básico y por medio de react creamos la aplicación. En un futuro se me ocurre que podría ser Progressive server side rendering si los todos están en una base de datos y el back nos devuelve la pagina inicial con ellos cargados, pero a medida que cargamos nuevos todos estos se procesen en el cliente.