Hola, mi nombre es Julian y estoy muy emocionado de hablar en React Summit este año. Ahora, 20 minutos no es mucho tiempo, así que entremos directamente en el tema porque quiero hablar sobre Suspense. Soy un gran fan de Suspense, básicamente desde que comenzaron a mostrar las primeras versiones de él en 2016, así que hace bastante tiempo.
Pero para aquellos que no lo saben, Suspense básicamente te permite renderizar límites dentro de tu aplicación para luego renderizar interfaces de usuario de respaldo como estados de carga siempre que algo debajo de esos límites todavía esté esperando que se resuelvan promesas. Así que esos podrían ser llamadas a API, pero también podrían ser pequeños fragmentos de JavaScript perezosos o cualquier otra tarea asincrónica que estés haciendo en tu aplicación. Ahora, eso es bastante genial. Pero creo que Suspense en el servidor es aún más impresionante, e incluso diría que es el héroe no reconocido de los componentes del servidor de React porque sin él, los componentes del servidor tal como los conocemos no serían realmente viables. Y hoy, espero poder mostrar por qué creo que es así y también desmitificar algunas cosas que están sucediendo debajo del capó.
Ahora, antes de eso, quiero echar un vistazo rápido a cómo llegamos incluso a los componentes del servidor en primer lugar, cómo Suspense se integra en todo eso solo para que todos estemos en la misma página. Para hacer eso, tenemos que echar un vistazo rápido a la historia del renderizado web en los últimos 15 a 20 años. Y ahora, esto me hará sonar como una persona mayor, pero espero que muchos de nosotros todavía recordemos los días en que escribíamos HTML simple y luego eventualmente lo creábamos dinámicamente en el servidor con lenguajes como PHP. Ahora, eso vino con un inconveniente, especialmente si teníamos que hacer mucho trabajo en el servidor para obtener ese HTML, ese tiempo de respuesta inicial del servidor podría ser realmente lento. Y eso es obviamente malo para la experiencia del usuario. Así que cuando comenzamos a introducir JavaScript en nuestras aplicaciones para hacerlas más dinámicas, también introdujimos conceptos como AJAX.
Así que AJAX nos permite incluso después de que la respuesta inicial del servidor haya terminado, volver al servidor y hacer cosas. Así que eso significa que podemos descargar mucho de ese trabajo pesado, aún tener una respuesta rápida del servidor, respuesta inicial del servidor, y renderizar algún tipo de estado de carga mientras volvemos al servidor y obtenemos más datos o lo que sea que necesitemos hacer. ¿Verdad? Y eso fue tan conveniente que comenzamos a hacerlo más y más hasta que finalmente llegamos a lo que ahora conocemos como aplicaciones de una sola página. Y con ello vinieron todos los frameworks que conocemos y amamos como React, como Vue, como Angular. Y para obtener lo mejor de ambos mundos, esos frameworks muy rápidamente reintrodujeron los conceptos de renderizado del lado del servidor y generación de sitios estáticos. Pero llevamos algunos de los problemas que teníamos, a saber, el primero siendo el tamaño del paquete de JavaScript. Así que desde las aplicaciones de una sola página, los paquetes de JavaScript simplemente siguieron aumentando y aumentando. Y eso no es genial. Y también causó algo así como el segundo problema, que es la hidratación. Así que incluso si tu aplicación se renderiza del lado del servidor, React todavía necesita enviar todo el JavaScript al cliente y necesita ejecutar todo el JavaScript para luego hidratar toda tu aplicación, por si acaso algunas partes de ella necesitan lógica del lado del cliente, ya sea estado, efectos o escuchadores de eventos y ese tipo de cosas. Ahora, la hidratación puede ser realmente lenta. Así que, de hecho, eso comenzó a convertirse en uno de los cuellos de botella de rendimiento que estamos viendo en las aplicaciones web modernas. El tercer problema es que estamos de vuelta en el servidor ahora. Así que tenemos el problema original nuevamente, donde si estamos haciendo mucho trabajo en el servidor, ese tiempo de respuesta inicial puede volverse realmente lento. Así que introducimos componentes del servidor. El punto principal de los componentes del servidor es que los desarrolladores podamos decirle al empaquetador qué componentes en nuestra aplicación son estáticos, solo necesitan ejecutarse una vez y qué componentes son dinámicos y realmente necesitan ejecutarse en nuestro cliente y también necesitan ser hidratados.
Comments