Componentes de Servidor React desde Cero

This ad is not shown to multipass and full ticket holders
JSNation US
JSNation US 2025
November 17 - 20, 2025
New York, US & Online
See JS stars in the US biggest planetarium
Learn More
In partnership with Focus Reactive
Upcoming event
JSNation US 2025
JSNation US 2025
November 17 - 20, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

Los componentes de servidor React (RSCs) son un gran cambio de paradigma para React. Incluso podrías preguntarte si NextJS y los componentes de servidor son lo mismo (spoiler: ¡no lo son!) Esta charla desmitifica cómo los RSCs *realmente* funcionan fuera del marco. Construiremos nuestro propio servidor Node, conectaremos el renderizador RSC a mano, y entenderemos la lógica de agrupación y enrutamiento para enviar un componente de servidor a tu navegador. Sí, todo con codificación en vivo. ¿Qué podría salir mal...?

This talk has been presented at React Summit US 2023, check out the latest edition of this React Conference.

FAQ

Ben recomienda usar Hano por su facilidad de uso para montar un servidor en localhost 3000, ideal para pruebas y desarrollo local.

Astro es un marco avanzado para construir sitios web, que permite a los desarrolladores construir componentes de servidor desde cero y manejar de manera eficiente la lógica del cliente.

Ben explica que usar componentes de servidor fuera de Next.js no es fácil, pero es posible construyendo un componente de servidor desde cero y utilizando herramientas como Hano para montar un servidor y ES build para el empaquetado.

ES build es un empaquetador basado en Go, destacado por su velocidad y eficiencia. Ben lo prefiere para compilar JSX a JavaScript porque permite configuraciones como módulos ES y empaquetar verdadero.

Ben evita problemas con las rutas utilizando una pequeña utilidad que resuelve automáticamente las rutas a las carpetas de aplicación y construcción, asegurando que los archivos se manejen correctamente sin intervención manual.

React Server Dom se utiliza para crear un stream que puede ser devuelto desde el servidor utilizando la función 'render to readable stream', permitiendo la transmisión de componentes y su renderización en el cliente.

React Virtual DOM por cable es una técnica que permite enviar instrucciones de renderización desde el servidor al cliente, donde React en el navegador las convierte en Virtual DOM. Esto facilita la carga dinámica y la interactividad en aplicaciones web.

Ben sugiere que el uso de componentes de servidor es fundamental para el futuro de React, ya que muchas bibliotecas están adaptándose para utilizar estos componentes, ofreciendo una nueva forma de construir y optimizar aplicaciones web.

Ben Holmes
Ben Holmes
29 min
13 Nov, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Esta charla introduce los Componentes de Servidor React y proporciona una guía paso a paso para construirlos y renderizarlos. Explora las capacidades de los componentes de servidor, incluyendo la interactividad y el streaming. La charla también cubre el proceso de incorporar la renderización del lado del cliente y los desafíos de agrupar y mapear los componentes del cliente. Además, discute la importancia de apoyar los Componentes de Servidor React y los esfuerzos en curso para integrarlos con diferentes agrupadores.

1. Introducción a los Componentes de Servidor de React

Short description:

Soy Ben. Soy un YouTuber y también una persona a tiempo completo en Astro. Lo que estamos construyendo son Componentes de Servidor de React desde cero. Vamos a tener un repositorio de ejemplo y recursos de aprendizaje. Nuestros objetivos son construir un componente de servidor desde cero, entender cómo manejar clientes, y transmitir cosas a través del cable y renderizarlas en el navegador. No perdamos tiempo. Tengo un archivo de servidor vacío y voy a darnos un servidor simple. Ahora necesitamos el componente. Voy a ir a mi carpeta de App y darnos uno llamado page.jsx. Vamos a tener un componente básico llamado página con el mensaje '¡Hola React Summit, woo!' Ahora necesitamos empaquetar esto para que funcione en node. Voy a ejecutar ES build, mi empaquetador favorito. Vamos a formatearlo como un módulo ES y ponerlo en una carpeta de construcción construida.

Soy Ben. Soy un YouTuber y también una persona a tiempo completo en Astro, que es un gran marco para construir sitios web. Sí, has leído bien. React Server Components desde cero es lo que estamos construyendo. Así que si te has estado preguntando, ¿cómo se usan los componentes de servidor fuera de Next.js, no es fácil pero lo vamos a hacer.

Así que vamos a tener un repositorio de ejemplo que puedes probar al final de la charla, y también algunos recursos de aprendizaje. Pero nuestros objetivos son construir un componente de servidor desde cero, entender cómo manejar clientes, así que vamos a hacer algo de empaquetado hoy. También vamos a averiguar cómo puedes transmitir cosas a través del cable y renderizarlas en tu navegador como un brillante componente de servidor.

Así que no perdamos tiempo. Tengo aquí un archivo de servidor vacío. Y para empezar, voy a darnos un servidor simple. Podrías usar Express o COA o lo que quieras. Voy a usar Hano, porque en mi opinión, es la forma más fácil de montar un servidor en localhost 3000. Así que sólo voy a ejecutar node-server. Te da la dirección localhost, y podemos ver Hola React Summit justo ahí. Bastante genial. Así que tenemos un servidor.

Ahora necesitamos el componente. Voy a ir a mi carpeta de App y darnos uno aquí. Lo voy a llamar page.jsx, reflejando las convenciones de nombres de Next.js, pero podrías llamarlo como quieras. Y voy a hacer un componente muy básico aquí llamado página, y vamos a tener un mensaje similar, ¡Hola React Summit, woo! Así que ahí lo tenemos. Tenemos nuestra página. Y ahora necesitamos empaquetar esto para que funcione en node. Sé que podríamos usar bun o dino o algo que tenga un renderizado elegante, pero vamos a hacerlo nosotros mismos. Vamos a decir función asíncrona construir, y dentro de aquí vamos a ejecutar ES build, que es mi bundler favorito para este tipo de cosas. Está basado en Go. Es rápido. Y también tengo un poco de configuración aquí para no estropearlo en el escenario. Tenemos bundle true. Vamos a formatearlo como un módulo ES, y vamos a tomar esa página y poner en una carpeta de construcción construida.

Read also

2. Construcción y Renderización del Componente del Servidor

Short description:

Importamos las dependencias necesarias y resolvemos las rutas de los archivos utilizando una utilidad. Luego, construimos el componente del servidor y lo convertimos en un elemento. Finalmente, renderizamos el componente a HTML y vemos la salida esperada.

Y también necesito poner un pequeño import en la parte superior para ES build. Ahí lo tenemos. Y notarás que tengo algunos resolutores de archivos aquí. Los voy a sacar de esta pequeña utilidad. Es muy simple. Solo estamos tomando nuestra carpeta de aplicación y nuestra carpeta de construcción y resolviendo la ruta a ellas, porque si hay algo que puede descarrilar una demostración en vivo, son las rutas de archivos de node, así que no estamos haciendo eso a mano.

Muy bien, e importaré node URL aquí mismo, y ahora deberíamos tener todo lo que necesitamos para construir un componente de servidor. También voy a esperar la construcción cuando iniciemos nuestro servidor, para que siempre comencemos con algo fresco. Reinicia, y deberíamos ver aparecer una carpeta de construcción en el lateral aquí con nuestra página ahora compilada a algunas funciones JSX en lugar de esa sintaxis JSX. Genial, así que ahora estamos listos para realmente colocar esto en nuestro punto final. Voy a hacer una importación básica aquí, así que nuestra página va a ser await import, y vamos a ir a buscar directamente desde la carpeta de construcción, page.js, y luego tomaremos nuestro componente y lo convertiremos en un elemento con react.createElement, use page default export, y luego vamos a tal vez solo devolver esto como HTML porque los componentes del servidor son solo renderización del servidor, ¿verdad? Seguramente, así que solo voy a ejecutar render to string, componente, y voy a importar eso en la parte superior, render to string, ahí lo tenemos, y ahora si reiniciamos nuestro servidor y renderizamos eso, deberíamos obtener hello React Summit renderizado justo allí.

3. Componentes del Servidor y Streaming

Short description:

Muy bien, eso es todo por mi charla. Los componentes del servidor pueden hacer más que solo renderizar HTML. Pueden manejar la interactividad y el streaming. Permíteme mostrarte un ejemplo con un componente de álbumes que obtiene datos de una base de datos y renderiza una lista de canciones. React Server Dom es una biblioteca central proporcionada por el equipo de React. Nos permite crear un stream y devolverlo desde nuestro servidor. Al usar streaming, podemos renderizar contenido de forma incremental y mostrar un estado de carga hasta que se obtengan los datos. Reiniciemos nuestro servidor y hagamos curl al endpoint para ver la salida.

Muy bien, eso es todo por mi charla, gracias, componentes del servidor desde cero. Gracias. Sí. Sí.

Bueno, espera. Espera, de hecho. Así que hay un par de cosas que los componentes del servidor pueden hacer que no son solo renderizar a HTML. En primer lugar, por supuesto, los componentes del cliente. Puedes renderizar HTML, pero quieres tener cierta interactividad con él. Y también, lo que creo que es la salsa secreta de los componentes del servidor, que es el streaming.

Así que permíteme mostrarte un ejemplo simple de eso aquí mismo. Digamos que tenemos un componente de álbumes que obtiene algunos álbumes de una database, literalmente solo llamando dentro de un componente y diciendo, oh espera, y luego renderizándolo a una lista de canciones y títulos. Y si quisieras renderizar eso, sabes, el stream y esperar a que se resuelva, puedes incluso hacer react suspense, tal vez poner un fallback, decir álbumes, y esto renderizaría el H1 de inmediato y mostraría la carga hasta que se complete la llamada a la database. Un sistema realmente genial que puedes hacer con los componentes del servidor, pero que no puedes hacer con un HTML plano. Necesitamos streaming.

Así que para eso voy a recurrir a una biblioteca central en React. React server Dom. Esto es algo que proporciona el equipo de React. Tiene versiones específicas para cada bundler. Webpack está lo suficientemente cerca de lo que estamos haciendo, lo creas o no, así que vamos a tomar de allí. Y vamos a crear un stream llamando a stream react server dom.render to readable stream. Y para devolver eso desde nuestro servidor, puedes hacer una respuesta estándar de la web, porque si no lo sabes, el streaming es parte de la plataforma. Si devuelves un stream, entonces el receptor sabe qué hacer con él. Así que ahora vamos a reiniciar nuestro servidor. Y esta vez, en realidad voy a hacer curl para ver qué salida obtenemos. Así que si hago curl a nuestro endpoint, deberíamos ver algo de código bajando por el cable. Primero, vimos que el h1 entraba, hola React Summit. Luego nuestro spinner de carga con una pequeña referencia L2 aquí. Ese número dos está haciendo referencia a lo que viene más tarde por el cable, que va a ser todos nuestros álbumes. Así que sabe cómo intercambiar en caliente la carga con la lista de álbumes.

4. Renderizando el Componente del Servidor y la Lógica del Cliente

Short description:

Permíteme mostrarte una vez más. Podemos ver que el encabezado aparece. Luego viene la llamada a la base de datos. Y todas tus cosas aparecen. Pero obviamente, esto no es HTML, ¿verdad? No es como nuestro viejo ejemplo. Esto es en realidad React Virtual DOM. Si no lo sabías, los componentes del servidor son algo así como una cosa de pila completa. Hemos terminado la parte uno, ahora necesitamos la parte dos, que es la lógica del cliente. Vamos a crear nuestro listener del cliente. Y ahora voy a convertir nuestra página de inicio en un documento HTML que va a cargar ese script al que estoy aludiendo. Y ahí es donde vamos a renderizar nuestro componente del servidor. Y vamos a usar este archivo del cliente para hacerlo. Así que vamos a escribir este archivo aquí, _client. En la parte superior, voy a importar algunos recursos. Primero, necesitamos createRoot, que es la forma en React de renderizar algo en un div.

Permíteme mostrarte una vez más. Podemos ver que el encabezado aparece. Luego viene la llamada a la database. Y todas tus cosas aparecen. Pero obviamente, esto no es HTML, ¿verdad? No es como nuestro viejo ejemplo. Entonces, si lo abro en mi navegador, ¿puedes ver que es una especie de muro de texto? El navegador realmente no sabe qué hacer con esto. Eso es porque no es puro HTML. Esto es en realidad React Virtual DOM. Le está diciendo a React, quiero renderizar un h1. Y luego quiero que reemplaces este spinner de carga más tarde. Como tenemos todo ese intercambio en caliente con suspense, necesitamos React en el cliente para recibir todo lo que viene del servidor y convertirlo en Virtual DOM. De hecho, he oído llamar a esto Virtual DOM por cable. Si no lo sabías, los componentes del servidor son algo así como una cosa de pila completa. El servidor envía todas las piezas del rompecabezas, y luego el cliente las junta y las ensambla en el sitio web. Hemos terminado la parte uno, ahora necesitamos la parte dos, que es la lógica del cliente. Así que permíteme borrar esta cosa de curl aquí para que no tengamos que mirarla. Vamos a crear nuestro listener del cliente. Para eso, voy a actualizar este endpoint para que sea /RSC, solo para ponerlo en un endpoint separado. Podemos llamarlo como queramos. Y ahora voy a convertir nuestra página de inicio en un documento HTML que va a cargar ese script al que estoy aludiendo. Así que vamos a crear eso. Y devolveremos algo de HTML dentro de aquí. Voy a hacer una plantilla muy básica. Así que tenemos DocType.html, un título simple, un script para algunas clases de tailwind solo para hacer que se vea bien, y luego un div con un ID root. Y ahí es donde vamos a renderizar nuestro componente del servidor. Y vamos a usar este archivo del cliente para hacerlo. Así que vamos a escribir este archivo aquí, _client. Así que lo pongo aquí, _client.jsx. Y en la parte superior, voy a importar algunos recursos. Primero, necesitamos createRoot, que es la forma en React de renderizar algo en un div.

5. Componentes del Servidor y Renderizado del Lado del Cliente

Short description:

Probablemente lo estarías usando para siempre, lo supieras o no. También tenemos el lado del cliente de la historia del DOM del servidor. Esto es createFromFetch, un asistente realmente increíble de React Core que toma una llamada fetch al componente del servidor que acabamos de hacer y lo convierte en DOM virtual para nosotros. Entonces, para hacer eso, primero voy a hacer mi root. Necesitamos actualizar nuestro servidor. Vamos a empaquetar el archivo del cliente y exponer nuestra carpeta de construcción en la red. Ahora deberíamos tener todo lo que necesitamos para al menos ver el archivo del cliente aquí. Entonces deberíamos ver en nuestra carpeta de construcción, aparece el cliente subrayado y toda esa hermosa bondad de React empaquetada.

Probablemente lo estarías usando para siempre, lo supieras o no. Y también tenemos el lado del cliente de la historia del DOM del servidor. Esto es createFromFetch, un asistente realmente increíble de React Core que toma una llamada fetch al componente del servidor que acabamos de hacer y lo convierte en DOM virtual para nosotros. Entonces, para hacer eso, primero voy a hacer mi root. Va a ser un document getElementByID root. Y también necesitamos llamar a createRoot en eso. Ahí vamos. Y vemos un pequeño error de TypeScript. Solo voy a decir que se calle. Sabemos que podría estar indefinido, pero si está indefinido, toda nuestra aplicación se bloquea. Y no podemos hacer mucho más que eso. Entonces digamos create from fetch y luego haremos fetch desde ese slash RSC. Y luego, cada vez que un componente se transmite por el cable, sin importar cuántas veces necesite resolver suspense render en ese div el componente, la transmisión actualizada. Y eso es todo lo que tienes que hacer, lo creas o no. Necesitamos actualizar nuestro servidor. Primero, para construir este archivo, voy a bajar a mi ES build y voy a agregar otra llamada para construir el archivo del cliente. Esto va a tener un conjunto ligeramente diferente de configuraciones. Entonces lo voy a ejecutar de manera diferente aquí. Configuración del cliente, esto va a tener el mismo bundler y lo convertirá en ESM que teníamos antes, excepto que ahora también vamos a empaquetar paquetes NPM. Obviamente no tienes que empaquetar NPM en Node pero en el navegador, necesitas empaquetar todas tus dependencias. Entonces eso es lo que vamos a hacer. Y vamos a empaquetar el archivo del cliente y en la parte superior aquí, vamos a... Oh, ¿qué vamos a hacer? Oh, también necesitamos exponer nuestra carpeta de construcción en la red porque en HTML, vemos que vamos a slash build slash client y nuestro servidor necesita responder con el archivo que acabamos de construir. Entonces, para eso, voy a agregar app.use y luego si intentas obtener algo de la carpeta de construcción, sírvelo como un activo estático. Y este es un asistente muy agradable que Hano nos da llamado serve static y eso va a construir todo estáticamente. Así que déjame agarrar esa importación, serve static. Y ahora deberíamos tener todo lo que necesitamos para al menos ver el archivo del cliente aquí. Entonces deberíamos ver en nuestra carpeta de construcción, aparece el cliente subrayado y toda esa hermosa bondad de React empaquetada. Son alrededor de 50 o 60k para empezar. Entonces, los componentes del servidor no son 0js.

6. Componente del Servidor como Receptor del Cliente

Short description:

El componente del servidor también puede actuar como un receptor del cliente, renderizando elementos y proporcionando interactividad. Podemos agregar estilos para hacer que la configuración se vea más agradable, como flexbox y tailwind. Además, podemos incorporar interactividad, como un botón de me gusta, utilizando la directiva use-client. Esta directiva descarga el componente por separado para evitar un renderizado accidental del servidor. Para habilitar esta funcionalidad, necesitamos crear una lógica de empaquetador y un plugin de resolve-client-imports.

Te están mintiendo si creías eso. En realidad, también es un receptor del cliente. Entonces, si subimos aquí, podemos ver que ahora está cargando todo y nuestro álbum se transmite a la vista, pero esta vez está renderizando elementos. Mira eso. Entonces, si refresco esto, puedes ver que aparece la carga y luego entra el resto. También voy a agregar algunos estilos, solo para que se vea un poco más agradable. Los escribí antes para mostrar, porque todos ustedes no tienen que verme centrar un div. Así que aquí tenemos flexbox, algunas cosas básicas de tailwind y si vuelvo a ejecutar eso, deberíamos ver una configuración más agradable aquí, llamada Spodifant, que es un falso Spotify. No lo sé. Y vemos que tenemos nuestra publicación y todas nuestras canciones renderizándose. Genial.

Entonces, usamos React para hacer lo que PHP ha hecho durante dos décadas. ¿Qué pasa con la interactividad? Eso es para lo que está destinado React. Entonces, vamos a necesitar agregar algo de interactividad. Hagamos el ejemplo básico de un botón de me gusta. Así que haremos like.jsx, y para esto estoy armando el contador básico que has visto en cada demostración anterior. Llevar un registro de los me gusta, y aquí abajo tenemos set likes y mostramos al usuario cuántos me gusta hemos incrementado desde allí. Todo parece igual, excepto en la parte superior aquí tenemos una mágica directiva use-client. Quizás hayas oído hablar de esto. Esta es la nueva bandera en React para decir que cuando llegas a un componente que comienza con esto, descárgalo por separado para que no lo rendericemos accidentalmente en el servidor en la transmisión. Así que ahora necesitamos crear alguna lógica de bundler para buscar use-client. Así que déjame volver aquí para hacer eso. Vamos a necesitar un plugin. Esta es una característica en todos los principales bundler. También voy a armar un plugin básico para nosotros. T-plugin, ahí vamos. Se va a llamar resolve-client-imports, y esta es una verificación básica para decir cada vez que intentas importar un archivo .jsx como, oh, déjame hacer eso dentro de mi servidor componente. Digamos que cada álbum es agradable. Podemos ver que like.jsx se importa aquí, y nuestro bundler dirá en cualquier momento que obtengas uno de esas importaciones elegantes, oh, parece que también necesito guardar algo. Ahí vamos.

7. Lectura y Seguimiento de Archivos del Cliente

Short description:

Deberías leer el contenido del archivo y verificar si comienza con 'use client'. Si es así, realiza un seguimiento de esos archivos del cliente y agrégalos a la lista para el empaquetado. Indica a ES Build que los trate como externos y colócalos en la carpeta de compilación para que el navegador los importe.

Deberías leer el contenido del archivo. Así que digamos contenido, oh, desearía poder hacer dno.readfile. Tengo que usar promesas de Node. Así que permíteme hacer una lectura de archivo desde allí, y luego podemos tomar el contenido y decir si el archivo comienza con. Voy a hacer comillas dobles, comillas simples, use client. También verifica las comillas dobles por cierto. Eso me ha quemado en el pasado, pero sé que estamos usando comillas simples aquí. Entonces, si comienza con use client, primero quiero hacer un seguimiento de todos esos archivos del cliente. Así que permíteme crear un pequeño mapa aquí arriba. Estos van a ser los puntos de entrada del cliente, y lo haré un conjunto. Esto es básicamente un array que elimina duplicados. Y aquí voy a decir, hey encontramos un componente del cliente, agrégalo a la lista y lo empaquetaremos más tarde. También le diremos a ES Build que haga un retorno temprano aquí, porque queremos manejar esto nosotros mismos. Así que diré, va a ser la ruta relativa, pero reemplázala con la ruta de salida construida. Así que vamos a construir nuestro JSX a JS en un momento. Así que dile a ES Build que lo encontrarás aquí. Trátalo como externo. No intentes empaquetarlo en nuestro paquete del servidor. Y luego lo vamos a poner en nuestra carpeta de compilación para que el navegador lo importe.

8. Construcción de Componentes del Cliente

Short description:

Hemos simulado los componentes del cliente y los hemos añadido a los puntos de entrada. Utilizando esmodule-lexer, rastreamos las exportaciones de cada archivo y las etiquetamos como referencias del cliente. Esto permite que React reconozca los componentes del cliente y los maneje en consecuencia.

Bien, ahora que hemos simulado eso, necesitamos construir nuestros componentes del cliente. Así que permíteme ir aquí abajo en nuestros puntos de entrada. Vamos a añadir nuestros puntos de entrada del cliente a la lista. Y vamos a desactivar los derechos de archivo, porque ahora quiero ser el dueño de los archivos.

Vamos a hacer un poco de post-procesamiento en el contenido de los archivos. Así que permíteme decir, aquí están los archivos de salida. Salen de esbuild. Y para cada uno de ellos, permíteme hacer un pequeño bucle, asíncrono, archivo. Para cada archivo en el bucle, vamos a rastrear todas las exportaciones de ese archivo. Porque en React podrías exportar cualquier número de componentes. Necesitamos etiquetar todos ellos como referencias del cliente. Oh hombre, desearía estar usando Deno, deja de recordármelo.

Así que aquí arriba, voy a importar este módulo genial llamado esmodule-lexer. Este es un compilador basado en go que es capaz de recorrer un archivo y analizar todos los nombres de exportación para que no tengamos que hacer todas las locuras de regex nosotros mismos. Así que diré, aquí están las exportaciones. Salen de analizar el contenido de los archivos, el contenido del texto, eso es. Y para cada una de las exportaciones, para ext de exportaciones, vamos a escribir en el archivo algunas etiquetas extra en esas exportaciones. Así que voy a hacer una variable mutable aquí. Nuevos contenidos, vamos a empezarlo como el contenido del archivo. Y vamos a añadir alguna información nueva. Así que nuevos contenidos, más iguales. Y luego aquí abajo vamos a decir, para cada nombre de exportación, vamos a añadir un tipo de decorador. Y esto va a tener un valor especial. Símbolo para react referencia del cliente. Esto es algo que React va a buscar mientras renderiza todos los componentos en el árbol. Si alguna vez encuentra una función de componente con la etiqueta react referencia del cliente, sabe, oh, he encontrado un componente del cliente. Dime qué hacer. Así que primero le dijimos que es un componente del cliente. Ahora tenemos que decirle, bien, cuando encuentres un componente del cliente, no intentes renderizarlo. En su lugar, simúlalo con una importación y lo importaremos desde nuestro servidor.

9. Etiquetado y Mapeo de Componentes del Cliente

Short description:

Dentro del navegador, añadimos una clave especial a cada ruta de archivo más el nombre de la exportación para crear un identificador único. Esto se escribe en un mapa global de componentes del cliente, que se pasa al servidor. El mapa de componentes del cliente se utiliza durante la renderización para generar declaraciones de importación para los componentes del cliente. Los metadatos de cada componente incluyen la ruta del archivo del servidor, el nombre, un array de chunks vacío, y async true para la importación asíncrona. La resolución de problemas está en curso.

Dentro del navegador. De esa manera podemos ejecutar use state y hacerlo interactivo. Entonces, ¿cómo lo etiquetamos? Bueno, vamos a añadir una clave especial a cada uno de estos. Y la clave puede ser cualquier identificador único. Pero un identificador que sea bastante fácil de usar. Simplemente la ruta del archivo más el nombre de la exportación. Porque eso debería ser muy único. Y vamos a escribir esto en un mapa que vamos a pasar a nuestro servidor.

Voy a hacerlo global. No uses globales en casa, pero es una demostración. Así que vamos a hacer eso. Vamos a decir mapa de componentes del cliente, objeto vacío, y aquí abajo, oh, probablemente debería hacerlo singular. Ahí vamos. Aquí abajo voy a pasar el mapa de componentes. Así que mientras está renderizando el stream, tiene este mapa de todos los componentes del cliente que existen, para que pueda convertirlo en declaraciones de importación. Aquí abajo también voy a actualizar nuestro mapa de componentes del cliente en la clave. Y necesita un poco de metadatos. Así que primero vamos a decirle dónde encontrarlo en el servidor, que va a estar dentro de slash build slash like dot js. Y necesitamos un poco de masaje para obtener ese tipo de ruta. Así que sí, resuélvelo desde la carpeta de construcción, toma la ruta del archivo. Sólo sé que esto va a convertir nuestro botón de like en slash build slash like dot js. Así que podemos importarlo desde esta carpeta de construcción en tu navegador. El resto es bastante sencillo. El nombre va a ser el nombre de la exportación en el archivo. Vamos a tener chunks como un array vacío, porque eso es una característica de webpack. Apaga eso. Y también haremos async true, lo que significa hacer una importación asíncrona. ¡Oh no! ¡Ah! Maldita sea, estábamos llegando. Vale. ¿Cable? Sí, déjame comprobar eso.

10. Resolución de Problemas y Pasos Finales

Short description:

Parece que lo tengo allí. ¿Es un problema de sobrecalentamiento? Quizás. Quizás. ¿Debería esperar? ¡Esperaré la placa! Eso es todo, gente. ¡Compartir en vivo, en tu máquina! ¡Todos unirse a la compartición en vivo! Tenemos nuestro mapa de cliente, ¿verdad? Estamos llevando un registro de todos nuestros componentes de cliente. Marcamos el tipo. Lo último que necesitamos hacer es decirle, cada vez que encuentres esta exportación, busca este ID en el mapa. Con suerte, esto debería ser todo lo que necesitamos para renderizarlo. Vemos que aparecen un par de chunks más aquí. Tenemos el botón de like, empaquetado para el navegador. Y vemos que la exportación de like fue etiquetada con nuestra referencia de cliente. Así que ahora, si visitamos esto en nuestro navegador, veremos obteniendo álbumes, y luego un error. Pero este es esperado. Así que aquí abajo, al menos espero que sea el uno. Así que si miramos aquí, vemos que webpack require no está definido.

Parece que lo tengo allí. ¿Es un problema de sobrecalentamiento? Quizás. Quizás. ¿Debería esperar? ¡Esperaré la placa! ¡Hey! Eso es todo, gente. Sí, no salgan de aquí temprano. Todos ustedes tienen buenas reacciones, está bien. Compartir en vivo, ¡en tu máquina! ¡Todos unirse a la compartición en vivo! Oh Dios, ¿hago eso? Eso parece lo menos seguro del mundo. Pero podría, podría. Vale. Bueno, podemos esperar. El problema es que no puedo seguir hablando de mis cosas. Todos ustedes necesitan ver lo que estoy haciendo. ¡Hey! ¡Muy bien! Eso es bueno, estamos casi al final.

Entonces, oh Dios, ¡vale! Mantendremos el ritmo, mantendremos el ritmo como lo teníamos antes. Entonces, vale, tenemos nuestro mapa de cliente, ¿verdad? Estamos llevando un registro de todos nuestros componentes de cliente. Marcamos el tipo. Lo último que necesitamos hacer es decirle, cada vez que encuentres esta exportación, busca este ID en el mapa. Así que tenemos nuestro mapa aquí, y podemos ver JsonStringify, la clave, simplemente poner comillas alrededor básicamente. De esa manera, cada vez que rastrea el componente, sabe buscar esta importación para resolverlo en tu navegador. Eso debería ser todo lo que necesitamos. Lo último que tengo que hacer es simplemente escribir el archivo en el sistema de archivos, porque estamos poseyendo ese proceso ahora. Y con suerte, cruzando los dedos, esto debería ser todo lo que necesitamos para renderizarlo. Así que vemos que aparecen un par de chunks más aquí. Tenemos el botón de like, empaquetado para el navegador. Y vemos que la exportación de like fue etiquetada con nuestra referencia de cliente. ¡Muy guay! Así que ahora, si visitamos esto en nuestro navegador. Veremos obteniendo álbumes, y luego un error. Pero este es esperado. Así que aquí abajo, al menos espero que sea el uno. Así que si miramos aquí, vemos que webpack require no está definido.

11. Hack de Webpack y Renderizado de Álbum

Short description:

Para hacer que webpack funcione con los estándares del navegador, podemos agregar un hack de webpack al archivo del cliente. Esto nos permite importar el archivo construido por el servidor en lugar de usar webpack require. Después de reiniciar el servidor, los álbumes aparecen con botones clickeables.

Eso es porque webpack no utiliza los standards del navegador, sorprendentemente. Entonces, si saltamos a nuestro archivo de cliente, podemos agregar esta pequeña cosa. Lo acabo de escribir, hack de webpack. Esto está diciendo que cada vez que intenta ir a la ventana y hacer un webpack require, simplemente use la plataforma y diga, haga una importación a mi servidor. Tengo el archivo construido para ti. Y el ID va a ser /build/like.js. Así que allá vamos. Ahora, si reiniciamos nuestro servidor, y nos dirigimos aquí, deberíamos ver obteniendo álbumes. Y luego nuestros álbumes aparecen con botones clickeables. Mira eso. Sí. Muy bien. Entonces, es realmente la primera ejecución en la que nada salió mal excepto el proyector.

12. Ampliando la Demo y Recursos Adicionales

Short description:

Hay mucho más que puedes hacer desde aquí, como configurar un enrutador de archivos o hacer un parámetro de consulta con un cuadro de búsqueda para obtener una nueva lista de álbumes. Discutí estos temas en un stream de invitados con Dan Abramov, que puedes encontrar en el readme en el repositorio que compartiré. El video es largo, pero está dividido en capítulos para facilitar la navegación.

Bien. Así que eso es todo lo que quería mostrarte para la demo básica, pero por supuesto hay mucho más que puedes hacer desde aquí. Por ejemplo, podrías haber estado pensando, bueno, eso es solo una ruta. ¿Cómo configuraría un enrutador de archivos? ¿Y también cómo solicitaría este componente de nuevo? Supongamos que tengo un cuadro de búsqueda y quiero hacer un parámetro de consulta con la búsqueda y obtener una nueva lista de álbumes desde el servidor. De hecho, pasé por todas esas cosas en un stream de invitados con Dan Abramov hace un tiempo atrás. Así que si quieres revisar este recurso, estará en el readme en un repositorio que compartiré al final. Es un video largo. Sí, son cuatro horas, pero hay muchos capítulos aquí para saltar a tu parte favorita. Así que si solo quieres aprender a configurar un cuadro de búsqueda o aprender a configurar un enrutador O simplemente quieres escuchar a Dan Abramov y a mí charlar sobre GraphQL. Todo eso está disponible aquí y puedes hojearlo para encontrar un recurso.

QnA

Conclusión y Preguntas y Respuestas

Short description:

Por otro lado, tengo videos de un minuto, que sabes que podrías ver. Puedes encontrar todos esos en mi canal de YouTube y también en Twitter. Estoy en bholmesdev en todas las principales plataformas. Así que si encontraste esto útil en absoluto, sígueme allí y comparto muchos recursos sobre React y también Astro. Gracias por tu tiempo. ¿Vale la pena usar RSEs fuera de Next.js? Diría que probablemente es demasiado temprano para usarlos fuera de Next.js. Trabajo en un marco llamado Astro, que está en Next.js. ¿Alguna noción de cuándo podría suceder eso realmente? No lo sé. Estoy tratando de conseguir como un enchufe, ya sabes, o algo... Mira en los próximos cinco trimestres fiscales. Tal vez, no lo sé.

Por otro lado, tengo videos de un minuto, que sabes que podrías ver. ¿Cuántos son? Sesenta veces cuatro cortos en el tiempo de ese video. Puedes encontrar todos esos en mi canal de YouTube y también en Twitter. Estoy en bholmesdev en todas las principales plataformas. Así que si encontraste esto útil en absoluto, sígueme allí y comparto muchos recursos sobre React y también Astro.

Vale. Eso es todo lo que quería mostrarles a todos. Gracias por tu tiempo. Aplaudan chicos, vamos.

Vamos con esta. ¿Vale la pena usar RSEs fuera de Next.js? ¿Vale la pena? Vale la pena... Vale. ¿Somos dignos? ¿Vale la pena usarlos fuera? ¿Vale la pena usarlos? Sí. Diría que probablemente es demasiado temprano para usarlos fuera de Next.js. La única razón por la que pasé todas las horas para averiguar eso, trabajo en un marco que está en Next.js llamado Astro. Así que tenía mucha curiosidad de cómo podemos hacer que esto funcione dentro de V popular bundle... O, digamos, Astro. O Astro. O, sí. Sí. ¿Alguna noción de cuándo podría suceder eso realmente? No lo sé. Vale. Bien. Sí. Estoy tratando de conseguir como un enchufe, ya sabes, o algo... Exactamente. ¿Sabes? Sí. Mira en los próximos cinco trimestres fiscales. Tal vez, no lo sé. No sé cómo mides las cosas, profesionalmente.

Integrando los Componentes del Servidor React con VT

Short description:

Estamos trabajando en incorporar los Componentes del Servidor React en VT, que es un empaquetador para aplicaciones React simples. Es un esfuerzo en curso con todo un equipo central involucrado. Sin embargo, las acciones del servidor presentan un problema difícil que requeriría cambios significativos. Actualmente, solo es compatible con webpack.

Algo de, ya sabes... Algo de tiempo. Pasará. Correcto. Estamos construidos sobre VT, sin embargo. Por lo tanto, es un esfuerzo en curso para incorporarlo en VT, que es un bundler para aplicaciones React sencillas. Astro, Sveltekit y Nuxt también están construidos sobre VT. Por lo tanto, es todo un equipo central de personas que están interesadas en tratar de descifrarlo. Y VT utiliza el bundler que estaba mostrando. Por lo tanto, hay mucho que podríamos hacer para descifrarlo. Pero las acciones del servidor complican las cosas, es un problema muy difícil. Eso requeriría algunos cambios importantes. Así que por ahora es algo solo compatible con webpack.

Importancia de Apoyar los Componentes del Servidor React

Short description:

Los componentes del servidor React deben ser apoyados por cualquier persona que utilice React o los principales marcos de trabajo. Dará forma al ecosistema, y muchas bibliotecas están haciendo la transición para utilizar componentes del servidor. Incluso si tu marco de trabajo no tiene usuarios que escriban componentes del servidor día a día, será necesario en el próximo año o dos. Los autores de las bibliotecas deben intentar hacer funcionar los componentes del servidor y colaborar utilizando un empaquetador compartido como VEET.

Bueno, tengo que decir, supongo que la pregunta más votada es una línea de Jurassic Park. ¿Alguna vez te has preguntado si nuestros científicos estaban tan preocupados por si podían, que nunca se detuvieron a preguntar si deberían. Pero esa es una pregunta interesante. En el contexto aquí, ahora que sabes tanto sobre los React componentes del servidor. ¿Estás como, uh, eso parece una buena idea o, uh, no sé. He mirado en el vientre de la bestia. Me asustó lo que vi. ¿Hizo esto, como, mirar hacia atrás? Sí. Sí, con errores de servidor y cliente. Oh sí. Sí. Um, así que siento que definitivamente es algo que debería ser apoyado por cualquiera que esté utilizando React o los principales frameworks porque va a dar forma al ecosistema a partir de aquí. Porque muchas bibliotecas ya están haciendo la transición para utilizar componentes del servidor y poner ese decorador de cliente para que si estás en ese contexto, todavía funciona como tú lo esperarías. Así que creo que incluso si tu marco de trabajo no tiene usuarios que escriban componentes del servidor día a día sólo para apoyar las principales bibliotecas de React, va a ser necesario en el próximo quizás como uno o dos años. Definitivamente estoy curioso por los sentimientos en el panel de componentes del servidor cuando lleguemos a eso. Absolutamente. Pero, sí, parece que estamos en los primeros días. Tenemos los patterns. Tenemos los primitivos. La gente los está probando en producción. Ahora el ecosistema necesita moverse en esa dirección y eso llevará más tiempo. Pensé que vi una pregunta, no la veo aquí, pero sobre lo que los autores de las bibliotecas deberían hacer con RSCs y ¿alguna idea sobre eso? Sí. Quiero decir que realmente depende de para qué sea tu biblioteca porque sé que hay bibliotecas como Redwood y Remix que han estado creo que probándolo en formas muy, muy tempranas para ver si esto tiene sentido con el modelo que tenemos ahora porque la gente ha hecho felizmente aplicaciones de React renderizadas por el servidor durante un tiempo y no necesitas componentes del servidor para construir aplicaciones efectivas. Son sólo esta mejora para hacerlas un poco diferente. Quizás hacerlas sólo del lado del servidor para cosas que lo necesiten. Así que creo que es algo que cada autor de marco de trabajo debería mirar, intentar hacer funcionar, y esperemos que podamos trabajar juntos utilizando un bundler compartido como VEET, para que si una persona se pone realmente curiosa y lo construye, todos podemos beneficiarnos y todos los marcos pueden probarlo. Mucho amor por VEET. Aplausos para VEET. Sí, VEET. Vamos.

Entendiendo las APIs de los Componentes del Servidor

Short description:

Nuestras APIs de componentes del servidor aún no están documentadas. El proceso para descifrarlas implica sumergirse en el código fuente y acudir a expertos como Dan Abramoff. Los autores de los marcos de trabajo son receptivos a las preguntas genuinas y a los esfuerzos por entender los componentes del servidor. Hacer preguntas y explorar el código fuente debería conducir a una mejor documentación y a una comprensión más profunda de los componentes del servidor.

VEET. Muy bien. Me encanta esta pregunta en particular. Así que nuestras APIs de componentes del servidor aún no están documentadas. ¿Cuál fue tu proceso para descifrar esto? Código fuente. Sí, claro. Quiero decir, eso es realmente importante. Como desarrollador, es una buena habilidad aprender a entrar en ello, descifrarlo. Sí. Y también enviando mensajes directos casualmente a Dan Abramoff. Sí. Bueno, OK. Eso fue muy útil. Más útil de lo que pensarías. Bueno, en realidad pensarías eso, estoy seguro. Pero creo que los autores de los marcos de trabajo estarían interesados. Quiero decir, si tienes preguntas reales y genuinas para la gente que son significativas y como, hey, hice el esfuerzo aquí. ¿Puedes ayudarme? Sí, están dispuestos a ello. Sí, el equipo meta es realmente, realmente receptivo en este momento. De hecho, recibí otro mensaje de Matt en el equipo meta que está tratando de trabajar en recursos de educación. ¿Cómo entiendes los componentes del servidor a nivel raíz? Así que creo que, como mínimo, hacer todas estas preguntas debería conducir a una mejor documentación que explique lo que está pasando bajo el capó. Eso es lo que espero. Y también, sí, quiero decir, sumergirse en el código fuente no es... Bueno, está bien, es bastante aterrador, pero no es tan aterrador como podrías pensar. Como leer una buena novela de misterio. Sí, y ya hay algunos recursos. Como el Equipo Central tiene una demo de React Flight. Flight es como su nombre interno para los componentes del servidor de hace años. Hay repositorios en los que me metí para entender cómo encajan las piezas. Así es como encontré la biblioteca de transmisión legible y create from fetch, que es la función más mágica que hace mucho por ti.

Recursos y Micro Frontends

Short description:

Así que hay recursos. Están ahí fuera. No tienes que ir totalmente por tu cuenta. ¿Podemos hacer lo mismo para los micro frontends? ¿Cómo encajan los RSCs en el modelo de micro frontends o islas? Las islas son una forma de poner un componente del lado del cliente dentro de una plantilla renderizada por el servidor. Los componentos del servidor son como la arquitectura de islas. Los componentes del servidor son una nueva forma de hacer islas. ¿Prevés algún problema de seguridad con los componentes del servidor? Siempre surge la inyección de SQL. Tenemos herramientas para eso.

Así que hay recursos. Están ahí fuera. No tienes que ir totalmente por tu cuenta.

Muy bien, ¿podemos hacer lo mismo para los micro frontends? O supongo, ¿cómo encajan los RSCs en el modelo de micro frontends o islas? Correcto, sí, islas, TM. Eso es algo que... Astro solo característica. Inventamos las islas. No, en realidad fue una publicación de blog del equipo de Preact, creo, que habló de las islas hace un tiempo. Vale, sí. Solo voy a volcar su captura de pantalla explicando las islas y la pondré en nuestra documentación. Esto existe. Está bien.

Sí. Breve introducción a lo que son las islas, es una forma de poner un componente del lado del cliente dentro de una plantilla renderizada por el servidor. Así que tienes algo de HTML, se renderiza en el lado del servidor. Y luego, en este pequeño div aquí, es como, quiero un carrusel de imágenes aquí y el resto es solo HTML. Y ese es el punto donde un bundler puede decir, oh, eso es una isla. Usaré Preact para cargar un componente en ese div. o elegir cuándo cargarlo, todas esas cosas. Así que los componentes del servidor son un poco más difíciles, porque los componentes del servidor son algo así como la arquitectura de las islas, porque cuando viste la directiva use-client, estás creando esta pequeña isla del cliente donde es como el botón Like va a cargar JavaScript, pero el resto de él no. Esa es realmente la base de lo que es una isla. Así que parece que los componentes del servidor son una nueva forma de hacer islas. Y podrías tener una isla de componentes del servidor dentro de HTML que también renderiza más cosas. Podrías volverte loco, pero es solo otra forma de hacerlo, en comparación con lo que está haciendo Astra.

¿Prevés algún problema de security con los componentes del servidor? Siempre surge la inyección de SQL. No sé por qué. Tenemos herramientas para eso. Correcto, en esa demo de Versal que mostraron, que no era – Clásico. – inyección de SQL. Me recuerdo a mí mismo de ello.

Desafíos de seguridad y salvaguardas

Short description:

La seguridad para las acciones del servidor es un desafío difícil. La agrupación de acciones del servidor puede llevar a exponer accidentalmente información sensible al cliente. Se han implementado salvaguardas, como restringir las acciones del servidor dentro de la directiva use client. Las bibliotecas como la referencia taint proporcionan protección adicional al marcar el código potencialmente inseguro. Las características de seguridad como estas son valiosas para prevenir la exposición no intencionada de datos sensibles.

Lo fue. Sí, creo que – No, no lo fue. ¿No lo fue? Oh, no lo fue. No, porque ellos manejan eso – Correcto, correcto, correcto, ellos usan la cosa de la plantilla. Correcto, sí, ellos usan el – Si no sabes de qué estamos hablando, no te preocupes, no es algo. Pero sí, creo que la security para las acciones del servidor es realmente difícil.

No pudimos demostrar eso porque agrupar las acciones del servidor es todo un desafío, pero la parte extraña de ellas es que puedes escribir una función de servidor, y puedes escribirla de alguna manera dentro del componente. Así que podrías escribir un manejador que diga, escribe en la database, y puedes pasarlo a un formulario, y podrías tener un cierre allí donde escribiste tu backend dentro de un componente, así que si tuvieras estas variables que se están pasando a esa función, podrías por error agrupar esas variables para el cliente, y ahora hay muchas más salvaguardas alrededor de eso. Como, si tienes use client, no puedes poner una acción de servidor allí, tienes que ponerla un poco más arriba, y hay muchas bibliotecas divertidas, como la referencia taint donde puedes – Sí, sé cómo mancharlo. Como, sí, puedes marcar algo como, si esto alguna vez llega al cliente, explota la construcción, lo cual es – es una característica de seguridad agradable, honestamente – Característica de seguridad. Característica de seguridad, la habría usado regularmente. Sí.

Muy bien, un gran aplauso para Ben, muchas gracias. Gracias, lo aprecio.

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

Simplificando los Componentes del Servidor
React Advanced 2023React Advanced 2023
27 min
Simplificando los Componentes del Servidor
Top Content
React server components simplify server-side rendering and provide a mental model of components as pure functions. Using React as a library for server components allows for building a basic RSC server and connecting it to an SSR server. RSC responses are serialized virtual DOM that offload code from the client and handle interactivity. The client manifest maps serialized placeholders to real components on the client, enabling dynamic rendering. Server components combine the best of classic web development and progressive enhancement, offering the advantage of moving logic from the client to the server.
Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
Compilador React Forget - Entendiendo React Idiomático
React Advanced 2023React Advanced 2023
33 min
Compilador React Forget - Entendiendo React Idiomático
Top Content
Joe Savona
Mofei Zhang
2 authors
The Talk discusses React Forget, a compiler built at Meta that aims to optimize client-side React development. It explores the use of memoization to improve performance and the vision of Forget to automatically determine dependencies at build time. Forget is named with an F-word pun and has the potential to optimize server builds and enable dead code elimination. The team plans to make Forget open-source and is focused on ensuring its quality before release.
Uso efectivo de useEffect
React Advanced 2022React Advanced 2022
30 min
Uso efectivo de useEffect
Top Content
Today's Talk explores the use of the useEffect hook in React development, covering topics such as fetching data, handling race conditions and cleanup, and optimizing performance. It also discusses the correct use of useEffect in React 18, the distinction between Activity Effects and Action Effects, and the potential misuse of useEffect. The Talk highlights the benefits of using useQuery or SWR for data fetching, the problems with using useEffect for initializing global singletons, and the use of state machines for handling effects. The speaker also recommends exploring the beta React docs and using tools like the stately.ai editor for visualizing state machines.
Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Next.js para Desarrolladores de React.js
React Day Berlin 2023React Day Berlin 2023
157 min
Next.js para Desarrolladores de React.js
Top Content
Featured WorkshopFree
Adrian Hajdin
Adrian Hajdin
En esta avanzada masterclass de Next.js, profundizaremos en conceptos clave y técnicas que permiten a los desarrolladores de React.js aprovechar al máximo Next.js. Exploraremos temas avanzados y prácticas prácticas, equipándote con las habilidades necesarias para construir aplicaciones web de alto rendimiento y tomar decisiones arquitectónicas informadas.
Al final de esta masterclass, serás capaz de:1. Comprender los beneficios de los Componentes del Servidor React y su papel en la construcción de aplicaciones React interactivas, renderizadas por el servidor.2. Diferenciar entre el tiempo de ejecución de Edge y Node.js en Next.js y saber cuándo usar cada uno en función de los requisitos de tu proyecto.3. Explorar técnicas avanzadas de Renderizado del Lado del Servidor (SSR), incluyendo streaming, fetching paralelo vs. secuencial, y sincronización de datos.4. Implementar estrategias de caché para mejorar el rendimiento y reducir la carga del servidor en las aplicaciones Next.js.5. Utilizar Acciones React para manejar la mutación compleja del servidor.6. Optimizar tus aplicaciones Next.js para SEO, compartir en redes sociales, y rendimiento general para mejorar la descubrabilidad y la participación del usuario.
Aventuras de Renderizado Concurrente en React 18
React Advanced 2021React Advanced 2021
132 min
Aventuras de Renderizado Concurrente en React 18
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
Con el lanzamiento de React 18 finalmente obtenemos el tan esperado renderizado concurrente. Pero, ¿cómo va a afectar eso a tu aplicación? ¿Cuáles son los beneficios del renderizado concurrente en React? ¿Qué necesitas hacer para cambiar al renderizado concurrente cuando actualices a React 18? ¿Y qué pasa si no quieres o no puedes usar el renderizado concurrente todavía?

¡Hay algunos cambios de comportamiento de los que debes estar al tanto! En esta masterclass cubriremos todos esos temas y más.

Acompáñame con tu portátil en esta masterclass interactiva. Verás lo fácil que es cambiar al renderizado concurrente en tu aplicación React. Aprenderás todo sobre el renderizado concurrente, SuspenseList, la API startTransition y más.
Consejos sobre React Hooks que solo los profesionales conocen
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
Consejos sobre React Hooks que solo los profesionales conocen
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
La adición de la API de hooks a React fue un cambio bastante importante. Antes de los hooks, la mayoría de los componentos tenían que ser basados en clases. Ahora, con los hooks, estos son a menudo componentes funcionales mucho más simples. Los hooks pueden ser realmente simples de usar. Casi engañosamente simples. Porque todavía hay muchas formas en las que puedes equivocarte con los hooks. Y a menudo resulta que hay muchas formas en las que puedes mejorar tus componentes con una mejor comprensión de cómo se puede usar cada hook de React.Aprenderás todo sobre los pros y los contras de los diversos hooks. Aprenderás cuándo usar useState() versus useReducer(). Veremos cómo usar useContext() de manera eficiente. Verás cuándo usar useLayoutEffect() y cuándo useEffect() es mejor.
Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced 2022React Advanced 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
Featured Workshop
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured Workshop
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.