Esta charla trata sobre funciones de servidor, pero en la primera parte, dedicaré algo de tiempo a discutir React Server Components, o RSC. React 19 introduce varias características nuevas, pero una de las más significativas es RSC.
RSC significa React Server Components, pero cuando decimos RSC, a menudo nos referimos a toda la capacidad de ejecutar React en un servidor. Así que, RSC incluye componentes de servidor, funciones de servidor, y tal vez más. Una cosa complicada es que RSC no siempre requiere un servidor en tiempo de ejecución. Puede renderizar varios componentes en tiempo de compilación y generar sitios estáticos. Así que, RSC incluso puede ayudar con aplicaciones de una sola página.
Técnicamente, la capacidad central de RSC es la serialización, y es proporcionada por una biblioteca de React, pero para consumirla, necesitas un framework o al menos un empaquetador. Ahora, exploremos cómo funcionan los componentes de servidor. Antes de que existieran los componentes de servidor, el concepto era simple, como sabes. Todo se ejecutaba en el cliente. Por cierto, una de las fortalezas de React, como veo, es esta representación intermedia, a veces llamada el DOM virtual. Gracias a esto, podemos renderizar un componente varias veces antes de comprometer o aplicar ciertas extensiones. Los componentes de servidor pueden considerarse como una de esas extensiones.
Ahora, con los componentes de servidor, tenemos dos tipos de componentes. Ambos se renderizan por separado y se fusionan en una sola representación. Los elementos JSX se serializan en un formato similar a JSON y se envían al cliente. Es difícil mostrar en este diagrama, pero los dos procesos de renderizado no ocurren realmente simultáneamente. Debido a que los componentes de servidor apuntan a los componentes del cliente, el renderizado realmente ocurre en el servidor al principio. Una vez que el cliente recibe los elementos JSX del servidor, renderiza los componentes del cliente y fusiona los dos resultados. ¿Hasta ahora, todo bien?
Veamos cómo se implementa esto. Me gustaría explicar la idea con código. Aquí, dos escenas de código básicamente representan el código del cliente y el código del servidor. Son pseudocódigo, pero están bastante cerca de la implementación real en mi framework. Veamos el código del cliente. CreateRoot es una función que debería ser familiar para la mayoría de los usuarios de React. Por otro lado, createFromFetch es una nueva función de la biblioteca de React y es típicamente utilizada por frameworks. Ahora, en el lado del servidor, cuando recibe una solicitud, el servidor renderiza el componente de la aplicación y crea un flujo. Este flujo se llama la carga útil RST que el cliente recibe y renderiza. La función clave aquí es renderToReadableStream.
Comments