Y Ahora Entiendes los Componentes del Servidor React
1. Introducción a los Componentes del Servidor React
¡Hola, Cumbre de React! Mi nombre es Kent C. Dodds y estoy emocionado de darles esta charla y ahora entienden los Componentes del Servidor React. Vamos a construir Componentes del Servidor React desde cero. Vamos a construir un marco de trabajo basado en los Componentes del Servidor React, y este es uno de los mecanismos que normalmente uso para ayudar a las personas a entender los bloques de construcción sobre los que están construyendo. Aquí están las reglas, esto es como un speedrun de la Leyenda de Zelda, tienes que tener reglas, así que no vamos a usar un empaquetador. No estamos usando ninguna dependencia. Estoy asumiendo que ya eres optimista acerca de los RSEs, no estoy aquí para convencerte de que los RSEs son impresionantes, estás dispuesto a sumergirte en los detalles más tarde. Ya conoces los conceptos básicos de los RSEs, así que useClient no es un nuevo concepto para ti. Y luego también eres lo suficientemente inteligente como para no intentar hacer esto en producción, esto, como dije, muy subóptimo. Es una aplicación de una sola página, así que vamos a empezar con una aplicación de una sola página 100% completa, ni siquiera generada por el servidor o algo así, sólo un servidor o una aplicación de una sola página en el cliente.
¡Hola, React Summit! Mi nombre es Kent C. Dodds y estoy emocionado de darles esta charla y ahora entienden los React Server Components. ¡Deseadme suerte! Ahora, si estuviéramos en persona, les pediría que se despertaran y se levantaran. Si físicamente pueden, únanse a nosotros para hacer algunas sentadillas. No estamos en persona, así que no voy a hacer que hagan eso. Pero si ha pasado un tiempo desde que han hecho fluir su sangre, deberían hacerlo porque su cerebro necesita flujo sanguíneo. Vamos a saltarnos eso por hoy, sin embargo.
Muy bien. Entonces, en diciembre de 2020, cuando se anunciaron los Componentes del Servidor, recuerdo que pensé, sentí algo gracioso al respecto. Dije, todos están muy emocionados por los React Server Components y supongo que yo también debería estarlo, pero me siento realmente indiferente al respecto. Lo cierto es que, hace unos meses, me habría vuelto loco con esto, pero sinceramente, Remix resuelve los mismos problemas ya, así que luego tuve una serie de razones por las que me sentía de la manera en que me sentía. Todavía un poco optimista, pero como que sentía que los problemas que los Componentes del Servidor estaban destinados a resolver no me aplicaban tanto. Me faltaban un par de cosas que los Componentes del Servidor hacen que Remix no podrá hacer sin los Componentes del Servidor, así que por favor perdónenme mi vacilación, pero eventualmente yo me acerqué a los Componentes del Servidor, y ahora he construido un framework basado en los Componentes del Servidor. El mío no está destinado para la producción o algo así, pero sí, esta es la transformación que he tenido, y si están familiarizados con esta escena, es donde los hobbits regresan después de su viaje por Mordor y todo, y han cambiado, y yo me siento de esa manera también, después de haber profundizado un poco en los Componentes del Servidor, y ahora puedo apreciar el valor que hay allí. Sé que quizás algunos de ustedes se sienten así, no entiendo los React Server Components, y en este punto tengo miedo de preguntar, pero mi trabajo es tratar de explicar los React Server Components de tal manera que sea lo suficientemente simple para que ustedes lo entiendan. Ese es mi objetivo, así que deséenme suerte.
Muy bien, así que vamos a construir los React Server Components desde cero. Vamos a construir un framework basado en los React Server Components, y este es uno de los mecanismos que normalmente uso para ayudar a las personas a entender los bloques de construcción sobre los que están construyendo, así que no espero que ustedes realmente hagan esto, pero espero que al construir un framework sobre los React Server Components tengan una distinción mucho más clara de qué son los React Server Components y qué es una cosa del framework y lo que sea. Así que aquí están las reglas, esto es como un speedrun de la Leyenda de Zelda, tienes que tener reglas, así que no vamos a usar un bundler. El bundler sólo nos distraería de la idea central de qué son los React Server Components. TypeScript también, así que no queremos tener ninguna build tools en absoluto, simplemente vamos libres sin TypeScript, y ni siquiera JSX, así que van a encontrar algo de createElement como h, eso es corto para hyperscript, y sí, así que vamos a estar usando createElement, la API de createElement directamente. Afortunadamente no vamos a pasar mucho tiempo en las cosas de JSX, así que están bien, no vamos a hacer ninguna optimización, hay muchas por hacer, pero esto no va a ser algo óptimo, y tampoco estamos usando ninguna dependencia. No quiero que se distraigan con todas las demás cosas extra. Básicamente no tenemos dependencias excepto las cosas oficiales de React, React Error Boundary, y Hano.js. Un par de cosas que voy a dar por sentado, estoy asumiendo que ya son optimistas acerca de los RSEs, no estoy aquí para convencerlos de que los RSEs son impresionantes, están dispuestos a sumergirse en los detalles más tarde, así que vamos a pasar por alto un par de cosas, y siéntanse libres de sumergirse más tarde para los detalles. Ya conocen los conceptos básicos de los RSEs, así que useClient no es un nuevo concepto para ustedes. Y luego también son lo suficientemente inteligentes como para no intentar hacer esto en producción, esto, como dije, muy subóptimo.
Muy bien, con todo eso establecido, aquí está la aplicación en la que vamos a estar trabajando para nuestro ejemplo. Es una vista de lista de detalles, actualiza la URL y todas esas cosas que esperarías. Es una aplicación de una sola página, así que vamos a empezar con una aplicación de una sola página 100% completa, ni siquiera generada por el servidor o algo así, sólo un servidor o una aplicación de una sola página en el cliente.
2. Construyendo Componentes del Servidor React
El proyecto se ve un poco así, tenemos nuestra base de datos, nuestro servidor y nuestro directorio de UI. Hacemos una solicitud a nuestra API con la ubicación inicial y usamos un hook para obtener los datos que necesitamos. En el lado del servidor, tenemos un servidor de archivos estáticos y un punto final de API para obtener el barco por su ID. Los RSC implican llamar a una API para obtener la UI renderizada por el servidor. Cambiamos la llamada a la API por RSC y combinamos los datos con la UI en el servidor. Para lograr la componibilidad, hacemos algunas diferencias, importamos react-server-dom-esm-slash-client y lo usamos en nuestro código.
El proyecto se ve un poco así, tenemos nuestra database, tenemos nuestro servidor, este es el servidor Hano.js que tiene un punto final para nosotros, y luego nuestro directorio de UI es todo lo relacionado con la UI. Y luego, aquí hay una pequeña introducción al code con el que vamos a trabajar y modificar con el tiempo. Tenemos nuestra ubicación inicial y nuestra promesa inicial de data, así que estamos haciendo una solicitud a nuestra API con nuestra ubicación inicial que tendrá el ID del barco y cualquier parámetro de búsqueda. Serializamos eso, o deserializamos eso como JSON, y luego estamos usando el hook con esa promesa, y estamos desestructurando los data que necesitamos para nuestra aplicación, y luego esto es nuestro reemplazo para JSX, esta cosa H, createElement como H, pasando estas props a nuestro componente de aplicación. Los detalles específicos no son críticamente importantes para usted en lo que hace este componente de aplicación en este punto. Además, porque estamos haciendo cosas nativas en todos lados, tenemos un mapa de importación en nuestro index HTML, así que cuando decimos importar React y React DOM y React DOM client, estamos extrayendo todos estos de ESMSH, estamos usando la beta de React 19, y sí, esperamos que en un futuro cercano esto sea simplemente React regular. Y finalmente, en el lado del servidor, tenemos un servidor de archivos estáticos para todos nuestros archivos, y luego tenemos un punto final de API para obtener el barco por su ID. También, vamos a tomar los términos de búsqueda, así que estos son básicamente todos los data que necesitas para esta página. Eso incluye nuestro ID de barco, la búsqueda, el barco, y los resultados del barco, que enviamos al cliente en esa carga inicial de la página. Y luego, también tenemos una especie de atrapar todo donde enviaremos ese index HTML. Así que situación típica de SPA sin SSG.
Muy bien. Ahora, hablemos de ello. Vamos de nuestra API a RSC. Así que cuando cargamos la aplicación, estamos haciendo una solicitud para obtener API/barco ID con el término de búsqueda que nos dará todos los data que necesitamos para nuestra aplicación. ID del barco, aquí está nuestra búsqueda, y aquí está el barco y aquí están los resultados para los barcos que coinciden con este término de búsqueda. Esto es bastante típico. Tal vez haces un par de llamadas a la API diferentes, pero en última instancia llamas a una API para obtener tus data. Así que los RSC en realidad no son una cosa enormemente diferente. En lugar de llamar a una API para obtener data, vas a llamar a una API para obtener RSC. Ahora, quiero dejar claro que no tienes que hacer esto a través de una interacción con el servidor en tiempo de ejecución. Puedes hacer esto en tiempo de construcción si quisieras hacer una generación de sitio estático, pero vamos a hacer esto en tiempo de ejecución. Así que nuestro trabajo es cambiar el /API por /RSC, y en lugar de obtener los data aquí y luego combinar los data con la UI en el cliente, en realidad vamos a combinar los data con la UI en el servidor y luego simplemente enviar la UI. Las cosas se ponen un poco interesantes cuando queremos componer las partes interactivas con las partes no interactivas, y por eso no estamos simplemente diciendo, hey, ve a buscarme el HTML e inner HTML todo. Así que vamos a ir un poco más allá de lo que podrías pensar que es la forma más sencilla de hacer esto, pero la razón es porque queremos tener una buena componibilidad con nuestro código del lado del cliente, al que llegaremos más tarde. Así es como logramos esto. Estas son una serie de diferencias que vamos a hacer. Así que primero, para el aspecto del lado del cliente, tenemos nuestro react-server-dom-esm-slash-client. Vamos a necesitar importar esto, por eso lo estamos añadiendo a nuestro mapa de importación, y esto va a ser responsable de algún aspecto de esto. Y luego aquí es donde realmente estamos usando eso.
Available in other languages:
Check out more articles and videos
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Workshops on related topic
React, JavaScript/Typescript, NextJS, Miro
Únete a nosotros mientras nos adentramos en el emocionante mundo de los Componentes del Servidor React, que combinan sin problemas el renderizado del lado del servidor con la interactividad del lado del cliente para un rendimiento y una experiencia de usuario inigualables. Obtendrás experiencia práctica a través de ejercicios prácticos, ejemplos del mundo real y orientación experta sobre cómo aprovechar el poder de los Componentes del Servidor en tus propios proyectos.
A lo largo de la masterclass, cubriremos temas esenciales, incluyendo:- Entender las diferencias entre los Componentes del Servidor y del Cliente- Implementar Componentes del Servidor para optimizar la obtención de datos y reducir el tamaño del paquete JavaScript- Integrar Componentes del Servidor y del Cliente para una experiencia de usuario fluida- Estrategias para pasar datos efectivamente entre componentes y gestionar el estado- Consejos y mejores prácticas para maximizar los beneficios de rendimiento de los Componentes del Servidor React
Explora el mundo de React Server Components, combinando sin problemas el renderizado del lado del servidor con la interactividad del lado del cliente para un rendimiento y experiencia de usuario incomparables. Sumérgete en React Server Actions para ver cómo combinan la interactividad del lado del cliente con la lógica del lado del servidor, facilitando el desarrollo de aplicaciones interactivas sin las limitaciones tradicionales de API.
Obtén experiencia práctica con ejercicios prácticos, ejemplos del mundo real y orientación experta sobre la implementación de estas tecnologías en tus proyectos. Aprende temas esenciales como las diferencias entre Server y Client Components, optimización de la obtención de datos, pasando datos de manera efectiva y maximizando el rendimiento con nuevos hooks de React como useActionState, useFormStatus y useOptimistic.
Ya sea que seas nuevo en React o un profesional experimentado, esta masterclass te equipará con el conocimiento y las herramientas para elevar tus habilidades de desarrollo web. Mantente a la vanguardia y domina la tecnología de vanguardia de React 19. No te lo pierdas: regístrate ahora y desata todo el poder de React!
Comments