Si React se ejecuta en un servidor y no hay nadie alrededor para verlo, ¿aún hace algún sonido? En esta charla, Fred explora el mundo de las optimizaciones del lado del servidor: ¿qué es posible hoy y qué nos depara el futuro? Con una vista previa de un emocionante nuevo proyecto nunca antes visto del equipo de Snowpack para ayudarte a construir sitios más rápidos con React!
This talk has been presented at React Summit Remote Edition 2021, check out the latest edition of this React Conference.
FAQ
Astro es una forma de construir sitios web más rápidos optimizando la cantidad de JavaScript utilizado del lado del cliente. Se enfoca en una arquitectura HTML primero, permitiendo una mejor velocidad y eficiencia.
Astro permite utilizar React en el servidor para renderizar componentes, diferenciándose de otros frameworks que dependen más del JavaScript del lado del cliente. Astro propone un uso opcional de JavaScript, enfocándose en HTML estático por defecto.
La hidratación parcial en Astro se refiere a la capacidad de activar JavaScript únicamente en los componentes que lo necesitan, en lugar de en toda la página, lo que contribuye a una carga más rápida y eficiente.
Astro ofrece ventajas como mayor velocidad de carga al minimizar el uso de JavaScript, flexibilidad para incorporar componentes de React y otros frameworks, y una mejor optimización para dispositivos con menor capacidad de procesamiento o conexiones lentas.
Sí, Astro soporta TypeScript y permite integrar componentes de React, lo que permite a los desarrolladores utilizar funcionalidades avanzadas y mantener patrones de desarrollo modernos.
En Astro, los componentes pueden ser estáticos o hidratados de manera selectiva, lo que permite a los desarrolladores optimizar la interactividad y la carga de los componentes según sea necesario.
La arquitectura de islas en Astro trata de pensar en un sitio web como una serie de componentes aislados que pueden ser hidratados individualmente, lo que mejora la eficiencia y el rendimiento al cargar solo los componentes necesarios.
Esta es una charla sobre el lenguaje del desarrollo web y cómo influye en lo que podemos construir. Presenta Astro, un método para construir sitios web más rápidos con menos JavaScript en el lado del cliente. Astro combina el poder de JavaScript y la velocidad de HTML. Explica cómo mezclar scripts y marcado utilizando un script de frontmatter. Astro te permite usar componentes de React en una aplicación de Astro, generando marcado en el lado del servidor. Ofrece interactividad opcional con JavaScript y una salida HTML en primer lugar.
Esta es una charla sobre el lenguaje del desarrollo web y cómo influye en lo que podemos construir. Se presenta un ejemplo de una charla en una conferencia de Pete Hunt, uno de los creadores de React, donde introduce React y sus conceptos a una audiencia que no está familiarizada con ellos.
Hola. Mi nombre es Fred Schott, y esta es mi charla, Astro, React sin JavaScript. Esta es una charla sobre lenguaje. Y no me refiero a JavaScript versus PHP versus C++ versus Fortran. Lo que quiero decir es el lenguaje de la mente. Y realmente, el lenguaje de cómo hablamos sobre el desarrollo web, y cómo pensamos sobre el desarrollo web, y cómo eso influye en lo que podemos construir como desarrolladores web. Sabes, lo que se considera fácil versus lo que se considera difícil. Lo que es sencillo versus lo que es muy difícil. Lo que es posible y lo que es imposible. Todo proviene del lenguaje que hablamos sobre el desarrollo web. Y para darte un ejemplo, de lo que estoy hablando, quiero mostrar una charla en una conferencia que realmente me encanta. Esta es probablemente mi charla favorita de los últimos 20 años. Además, obviamente la infame charla de qué, si no la has visto, es una delicia. Definitivamente te recomiendo que la busques rápidamente en Google cuando termine la conferencia. Pero de lo que quiero hablar es de esta charla. Este es Pete Hunt, uno de los creadores de React, hablando sobre React. Y realmente lanzando React.
Ahora, lo que necesitas saber sobre esta charla es que tuvo lugar en 2013. Y esta es básicamente la primera vez que todos ven React. Y por lo tanto, las ideas que se presentan aquí, ya sabes, en 2020, son ideas de componentes y ciclos de renderizado y cómo pensamos sobre el desarrollo Front End. Todo suena exactamente a lo que hemos llegado a entender como buenas mejores prácticas. Pero, para esta audiencia, estos conceptos son muy extraños. Esta no es una audiencia que piensa en componentes y JSX. Esta es una audiencia que tradicionalmente solo ha pensado en términos de MVC. Eso es Modelo Vista Controlador. Si tuviste la suerte de haber evitado esta parte del desarrollo web, te ahorraré los detalles. No te perdiste mucho de nada. Pero MVC era esta idea de separar tu código y separar tus preocupaciones de tal manera que aportara claridad y limpieza a tu base de código. Separar tus preocupaciones era el objetivo aquí. Y así, cuando Facebook lanzó Componentes, era básicamente esta idea de, ya sabes,
2. Introducción desafiante de React
Short description:
La introducción de React por parte de Facebook fue recibida con escepticismo, ya que desafió las mejores prácticas establecidas en el desarrollo web, especialmente la arquitectura MVC. Muchos se preguntaron por qué Facebook pensaba que podían desafiar el statu quo y desviarse del enfoque ampliamente aceptado. La respuesta general fue que el enfoque de React para el desarrollo web no se alineaba con el pensamiento de la industria en ese momento.
MVC no es la respuesta. Estás separando estas cosas, pero te has acoplado de muchas maneras diferentes. Los componentes son una idea mucho mejor. Esa fue la propuesta de React. Y eso fue recibido con lo que generalmente llamaría sarcasmo. Sarcasmo, creo, es la definición técnica de cómo fue recibido. Porque, sabes, creo que este tweet puede decirlo mejor de lo que yo podría. El pensamiento general era que Facebook estaba desechando las mejores prácticas establecidas. Y, sabes, ¿quién eran ellos para hacer eso, verdad? MVC es lo mejor que jamás será. ¿Quién se cree Facebook desafiando el statu quo? Y para ser justos, estoy agregando mucho énfasis que realmente no está presente en este tweet. En cuanto a los comentarios en Twitter, esto es bastante educado y directo. Pero la respuesta general fue, sabes, esto no es cómo pensamos sobre el desarrollo web. ¿De qué estás hablando? Y así, lo que Pete hace en esta charla, que es como su segunda oportunidad de presentar React
3. Desafiando el Lenguaje de los Sitios Web
Short description:
Esta charla presenta una nueva forma de pensar en los sitios web y desafía el lenguaje utilizado para describirlos. Introduce Astro, un método para construir sitios web más rápidos con menos JavaScript en el lado del cliente.
al mundo, él comienza a replantearlo un poco. Empieza a decir, no, no, no. React es solo como MVC, es la vista de MVC. Bueno, a veces es el controlador y a veces es el modelo, pero realmente es solo la vista. Incluso recuerdo pensar, como, oh, es la vista. Es la vista. Vale. Genial. Aunque decir que es las tres cosas es exactamente lo que él está diciendo. El modelo no tiene sentido. Pete, incluso funciona con tu pila de tecnología. Funciona con backbone, y los desarrolladores en la audiencia dicen, ¡sí! ¡Backbone! ¡Una tecnología que seguiremos usando para siempre! Por lo tanto, esta charla es muy representativa de su época. Es alguien pensando en el desarrollo web de la forma en que lo pensamos hoy. Casi viajando en el tiempo hasta 2013 para tratar de explicarlo utilizando un lenguaje y una arquitectura que hoy vemos como obsoletos. Y así, esta charla que voy a dar hoy, quiero hacer algo similar. Quiero, y, ya sabes, diré que hemos visto algunas charlas geniales de otros frameworks web hoy. Todos proyectos increíbles, Next.js, Gatsby, Remix, Blitz, Redwood, ya sabes, esta ha sido una conferencia llena de diferentes formas de construir tu sitio. Todos proyectos geniales. Cosas fantásticas. Pero estamos terminando la conferencia, estamos llegando al final, así que quiero lanzarles a todos una bola curva. Quiero desafiarlos un poco. Quiero presentar una forma de construir sitios web que realmente desafía la forma en que pensamos sobre los sitios web. Quiero desafiar el lenguaje que usamos para describir lo que es un sitio web hoy en 2020. Y no soy Pete Hunt. Esto no es React. Tengo un poco más de orgullo o humildad que para decir eso. Pero esta es una nueva forma de pensar en los sitios web, y estamos muy emocionados por lo que desbloquea. Voy a tomar prestado un poco de Pete Hunt. Dale cinco minutos, y creo que te va a gustar lo que hemos estado trabajando. Esta charla es una presentación sobre Astro, que es una forma de construir sitios web más rápidos con menos
4. Astro: Desarrollo web más rápido y fácil
Short description:
Astro es un componente de React renderizado en el servidor que es más rápido y fácil de usar que los métodos tradicionales. Simplifica el proceso de construcción de sitios web mediante el uso de archivos Astro, que son un superconjunto de HTML. Con Astro, puedes crear sitios de carga rápida que superan a los frameworks con puntuaciones perfectas. El objetivo es ser tan rápido que no se pueda medir. Esta charla destaca la importancia de HTML en el desarrollo web.
JavaScript en el lado del cliente. Y todos dicen que son rápidos. Todos dicen que son eficientes. Todas palabras de moda. Si estás buscando algo un poco más llamativo, Astro es un componente de React renderizado en el servidor, pero mejor. ¿Capté tu atención ahora?
Y es posible que estés pensando, ¿de qué estás hablando? El equipo de React ha estado trabajando en componentes de React renderizados en el servidor durante años. Es increíblemente difícil. Suspense, modo concurrente, todas estas cosas se están uniendo, pero es un gran desafío. ¿De qué estás hablando que has descubierto esto? Y esto es exactamente de lo que estoy hablando sobre el lenguaje. En ciertas formas de pensar, es muy difícil. Con Astro, es muy fácil.
Antes de entrar en la demostración, quiero mostrarte un pequeño fragmento rápido. Astro se trata de construir tu sitio con archivos Astro. Esencialmente, es un superconjunto de HTML. Esto también es válido en Astro. Es similar a cómo JSX es paraJavaScript. Astro es para HTML. Pero esta es la base de cada sitio. Así que puedes ver este tipo de páginas index.Astro, que es esencialmente la página de inicio de tu sitio web que estás construyendo. Es HTML básico como base. Y si conoces HTML o incluso si conoces JSX, entonces ya conoces Astro. Y para construir la página de inicio de Astro, Astro.build, esencialmente junté algunas páginas estáticas, HTML, agregué un SVG y lo medí. Y obtuve un sitio tan rápido, tan rápido que no se podía medir en Lighthouse. Así que todos estos frameworks con sus puntuaciones perfectas de 100 y todo en verde, ya no es genial. Lo que descubrí que es realmente genial, son los ceros. Sé tan rápido que no se pueda medir. Ese es el nuevo objetivo. El desafío está planteado. Pero eso es lo que quiero transmitir aquí un poco. Es esta idea de HTML.
5. Astro vs. Aplicaciones JavaScript
Short description:
Astro compara las aplicaciones JavaScript con los sitios web HTML. Las aplicaciones JavaScript, como Next.js, Gatsby, Blitz y Redwood, ofrecen potencia y control con la carga de datos, la obtención de datos y el enrutamiento. Sin embargo, son complejas y requieren optimización para el rendimiento. Los sitios web HTML, como Eleventy y Hugo, son tradicionalmente de menor potencia y se centran en el contenido. Agregar interactividad a los sitios web HTML a menudo requiere configurar herramientas adicionales.
Y realmente la idea de cómo Astro se compara con otros frameworks que existen hoy en día. Y la forma en que lo enmarcaría es aplicaciones JavaScript vs. sitios web HTML. Las aplicaciones JavaScript son lo que estás construyendo con la mayoría de los frameworks que existen hoy en día. Eso es Next.js, Gatsby, Blitz, Redwood. Todos ellos se tratan de construir tu sitio como una aplicación JavaScript. Y hay muchas buenas razones para hacer esto.
Las aplicaciones JavaScript son potentes. Son muy expresivas. Puedes cargar datos, obtener datos, hacer enrutamiento. Y todas estas diferentes formas de construir un sitio en un lenguaje realmente agradable para el poder y el control. Pero son complejas. Next.js y todos estos frameworks existen básicamente para darte diferentes ganchos para hacer que tu sitio sea más rápido que el modelo tradicional de enviar una aplicación completa al usuario, que es el modelo tradicional de SBA. Entonces, puedes construir una aplicación JavaScript y enviarla al usuario. Podrías usar algo como Next que la renderizará en un servidor. Se trata de optimizar esa historia porque el rendimiento puede ser un desafío. Cuando construyes una gran aplicación y ahora quieres enviarla al usuario en tal vez un dispositivo de menor potencia o una conexión a Internet más débil, eso puede ser realmente desafiante de hacer correctamente, por eso las optimizaciones como SSR, SSG, son realmente importantes en el mundo de las aplicaciones JavaScript. Y podrías decir, sabes, si piensas que la distinción no tiene mucho sentido, eso es casi a lo que me refiero aquí, es que hoy en día somos tan sinónimos de aplicaciones JavaScript y sitios web como la misma cosa. Y hay buenas razones para eso. Si piensas en lo que es un sitio web HTML, probablemente sea algo de menor potencia. Eleventy o Hugo, se centran realmente en el contenido, markdown, generación estática de HTML, es una idea bastante de menor potencia o al menos tradicionalmente lo ha sido. Lo que terminan teniendo que hacer es decir, sí, JavaScript es esta otra cosa a la que no tocamos. Somos HTML. Si quieres agregar React, hazlo tú mismo. Así que el sitio web de Snowpax, uno de los proyectos en los que trabajo, lo construimos con Eleventy. Es genial. Es rápido, pero en el momento en que necesitas interactividad, tienes que configurar tu propia cosa.
6. Astro: Combinando el Poder de JavaScript y la Velocidad de HTML
Short description:
Astro combina el poder de JavaScript y la velocidad de HTML. Te permite construir sitios web rápidos con un mínimo de JavaScript. Astro es una combinación de la historia de rendimiento de 11ty y el poder de Next.js. Proporciona un entorno de desarrollo sin problemas y un sistema de enrutamiento basado en archivos.
para el cual tenemos un complemento de Snowpack. Es genial. Aporta un flujo de desarrollo moderno a un sitio HTML estático, pero definitivamente se siente que has juntado dos herramientas. No es el entorno de desarrollo sin problemas que te daría un Next.js. Pero esa idea de hacer que sea difícil agregar JavaScript es algo así como el regalo y la maldición de algo como Eleventy. Cuando lanzamos el sitio de documentación de Snowpack, la nueva reconstrucción en diciembre, recibí algo que me alegró todo el mes, un mensaje de Alex Russell diciendo que hice un buen trabajo con el rendimiento. Ahora, si conoces a Alex Russell en Twitter, esto es algo inaudito. Es una estrella fugaz el 4 de mayo. Ni siquiera sé qué significa eso. Esto fue grande y me puso muy feliz. Mientras preparo esta charla, veo que, bueno, no dijo que fuera tan bueno. Lo dijo bastante rápido. Por Alex, lo aceptaré. Eso es un elogio bastante alto. Lo interesante es que continuó diciendo cómo lo hiciste. Obviamente, el rendimiento, es muy bueno ver a las personas tratando el rendimiento tan seriamente. Nos sorprendió un poco porque realmente no nos importaba el rendimiento. No es que faltáramos al respeto a nuestros usuarios. Construimos un sitio y lo enviamos y fue rápido. Fue una historia bastante simple. Fue interesante porque gran parte de mi vida la he pasado siendo muy cuidadoso con el rendimiento. Aquí estábamos construyendo un sitio que era rápido por defecto. Sin carga de JavaScript, solo HTML, CSS y algunos SVG e imágenes. Eso fue todo. Y esta experiencia realmente moldeó cómo vimos el desarrollo web como equipo y lo que realmente es Astro, es una oportunidad para tratar de unir estas dos ideas diferentes. El poder de JavaScript, la expresividad y el control que tienes sobre lo que construyes, pero con la velocidad de algo que es mucho más HTML primero. Sin JavaScript enviado al cliente a menos que lo desees explícitamente. Entonces, la historia de rendimiento de un 11d mezclado con el poder de un Next.js, eso es lo que es Astro hoy. Entonces, ¿qué significa eso? Vamos a ver una demostración. Lo que tienes aquí es un sitio Astro bastante estándar. Tienes algunos activos estáticos en un directorio público y nuestros principales bloques de construcción aquí en un directorio Astro, componentes, diseños a los que llegaremos, pero pasarás la mayor parte del tiempo aquí en las páginas. Estas son las páginas de tu sitio, esencialmente un sistema de enrutamiento basado en archivos. Y dijimos en la parte superior que cualquier archivo Astro es un superconjunto en
7. HTML como base para páginas dinámicas
Short description:
Esta parte introduce el concepto de utilizar HTML como base para construir páginas web dinámicas. Explica cómo combinar scripting y markup utilizando un script de frontmatter, similar a los componentes de un solo archivo de Svelte o Vue. El ejemplo demuestra cómo combinar markup y JavaScript para crear contenido dinámico. También introduce el uso de componentes, como la cabeza común y una imagen de héroe, para mejorar la estructura HTML. Se explica el componente de cabeza común, incluyendo su capacidad para agrupar propiedades meta comunes y el uso de props para inyectar valores en el componente. También se menciona TypeScript de pasada.
En la parte superior de HTML. Así que lo que tenemos aquí es simplemente HTML. HTML válido, es bastante estático. Vamos a ejecutar esto con npm start. Eso iniciará el servidor de desarrollo de Astro y podrás verlo ejecutándose aquí en el navegador. Ahora, hablamos de querer hacer que HTML sea más dinámico, darle el poder de JavaScript en términos de expresarte y lo que puedes hacer, pero manteniendo esa estructura de documento HTML primero en términos de lo que estás construyendo, el lenguaje de lo que creas. La forma en que lo hacemos es con algo llamado un script de frontmatter. Esto es muy similar a Svelte o Vue si has utilizado su concepto de un componente de archivo único. Aquí vamos a hacer algo similar para comenzar a mezclar la idea de scripting y markup. Así que aquí simplemente definiremos una idea de un título, y será AstroDemo. Obtendremos un pequeño signo de exclamación por diversión. Y al igual que JSX, puedes combinar markup y JavaScript. Así que aquí podemos usar el título en el valor aquí, podemos usarlo como atributo, o podemos usarlo nuevamente aquí como un valor de contenido real en la página. Si actualizamos eso, verás que se actualiza con un nuevo título y signo de exclamación.
Pero queremos ir más allá, queremos seguir incorporando más conceptos de componentes modernos en cómo renderizas esta página. Así que pensemos en componentes, agreguemos algunos componentes a este HTML. Comencemos con dos. Uno es algo que llamaremos cabeza común. Y tengo que escribir eso correctamente, components.commonhead.astronaut, commonhead.astronaut. Y el otro es una imagen de héroe. Agreguemos una bonita imagen de héroe en la página. Empecemos con eso, simplemente añadámoslo aquí.
Y la cabeza común en realidad será un componente que se encargará de todas estas propiedades meta. Así que si tienes muchas páginas en tu sitio, no quieres repetirte una y otra vez, podemos usar un componente como este para agrupar algunas propiedades y etiquetas comunes de cabeza para que las uses en varias páginas. Ahora, la cabeza común es interesante porque en realidad toma props. Es un archivo Astro, es un fragmento de HTML que vamos a inyectar en el sitio, pero va a tomar la prop del título como veremos en un segundo. Puedes ver que lo hace utilizando nuevamente un concepto de Svelte de definir tus props como valores exportados. Así que aquí hemos exportado el título para mostrar que es una prop. Y luego podemos usarlo en el fragmento de HTML que vamos a inyectar en tu sitio. De nuevo, conceptos muy similares a los de React y Svelte, estamos tomando prestadas muchas ideas realmente buenas que hemos visto en la comunidad antes que nosotros. También puedes notar,
8. Astro: TypeScript, Reusabilidad y Obtención de Datos
Short description:
Admitimos TypeScript en tu front matter de forma predeterminada. Guardemos y actualicemos la página para ver la imagen del héroe. Tenemos un componente DOM reutilizable. El fragmento incluye un ejemplo de Pokédex, que demuestra la sintaxis similar a JSX y la obtención de datos en tiempo de compilación. Astro te permite utilizar top level await para el renderizado en el servidor, lo que resulta en HTML completamente estático.
si tienes buen ojo, hay TypeScript aquí. Admitimos TypeScript en tu front matter de forma predeterminada. Así que siéntete libre de mezclar y combinar allí. Guardemos esto y actualicemos la página. Y verás que la imagen del héroe también aparece. Así que tenemos un componente DOM real que hemos reutilizado. Sí, podríamos tener muchos, pero mantengámoslo en uno, eso es respetable.
Ahora, para el resto de esto, mostraré algunos fragmentos más interesantes. El primero es un Pokédex. ¿Qué buena demostración técnica no incluye Pokémon? Ahora hay algunas cosas interesantes que quiero mostrar en el fragmento. La primera es que cuando decimos que tenemos esta sintaxis similar a JSX, realmente lo decimos. Puedes ver aquí una expresión completa de JavaScript que mezcla la sintaxis de astro y JavaScript juntas. Así que al igual que el JSX al que estamos acostumbrados en React, vamos a usar esta expresión para renderizar múltiples componentes en la página. Aquí, vamos a mostrar realmente un sprite de Pokémon para los primeros tres Pokémon en el Pokédex. Oh, y tenemos que usarlo primero. Búsqueda de Pokémon. Y agreguemos un poco de display flex solo para colocarlos todos en la página. Mira eso. Así que si no conoces Pokémon, toda la idea de un Pokédex, nada de eso es importante. Lo que estamos haciendo aquí es divertirnos con Pokémon y generar tres pequeños sprites aquí, tres pequeñas imágenes. Lo interesante de este componente es que estamos introduciendo la idea de obtención de datos. Así que no enviamos todos los Pokémon conocidos por el hombre. Aquí tenemos la obtención de datos, obteniendo en tiempo de compilación y realizando una llamada a la API. No solo tenemos ese soporte a través de fetch, sino que también tenemos top level await. Así que la idea de esto afectando al usuario, es completamente en tiempo de compilación. Puedes usar top level await como parte de tu renderizado en el servidor y el usuario nunca lo ve. Así que no hay realmente una gran preocupación de performance para el usuario aquí porque todo esto se renderiza como HTML estático al final del día. Podemos ver eso en el panel de red aquí. Actualizaré y no hay JavaScript en la página, todo es HTML estático. Así que esa es una idea realmente interesante de cómo puedes expresarte con el lenguaje basado en HTML en el servidor llamado Astro de formas en las que estarías mucho más limitado si estuvieras utilizando un framework de front-end como React o Svelte donde no puedes simplemente agregar un top level await porque el usuario lo vería. En este mundo, estamos completamente renderizados en el servidor.
9. Usando Componentes de React en Astro
Short description:
Podemos usar componentes de React en una aplicación de Astro, generando marcado en el lado del servidor. Esto nos permite combinar Astro como un lenguaje HTML y React como un framework de JavaScript. No se limita solo a React; otros frameworks como Preact también son compatibles.
Entonces, en realidad no tenemos esas preocupaciones. Somos un poco más libres para expresarnos de esta manera sin el boilerplate.
Voy a mostrar otro pequeño fragmento de demostración aquí. Y eso es esta idea de regalar la parte divertida, un selector de emojis. Esto no es solo cualquier selector de emojis. Agreguemos nuestra importación aquí arriba. Puede que lo hayas visto en el directorio de componentes si lo estabas buscando. Este no es un archivo de Astro. Es un archivo JSX. Es un componente de React.
Dije al principio en la charla, ¿verdad? Hemos hecho componentes renderizados en el servidor. ¿Qué significa eso? Significa que te permitimos usar React en tu aplicación de Astro. Aquí tenemos un componente de React. Está utilizando otro paquete de npm. Está utilizando algo de CSS. Y todo esto genera marcado en el lado del servidor. Vamos a renderizar este componente en el lado del servidor. Aquí tenemos tres de ellos. Actualicemos la página. Y mira eso. Acabamos de combinar. De hecho, lo haré. Así puedes verlo tú mismo. Hemos combinado Astro como un lenguaje HTML y React como un framework JavaScript. Pero los hemos renderizado todos en el lado del servidor. Todo generando HTML al final del día. Así que puedes hacer esto con cualquier framework. Es el React Summit. Usaremos React. Pero Preact es
10. Astro: Interactividad opcional con JavaScript
Short description:
Cualquier cosa que se renderice a HTML se puede usar en el servidor de esta manera. El usuario no ve JavaScript en su carga final. La idea es hacer que la interactividad en JavaScript sea opcional a nivel de componente. Al agregar un modificador, como 'idle', a un componente escrito en un framework como React o pre-actores, se puede generar código para hidratar el componente en la página, haciéndolo completamente interactivo en el cliente. Astro también ofrece el modificador 'visible', que solo hidrata los componentes cuando se vuelven visibles en la pantalla. Este enfoque ayuda a reducir la cantidad de JavaScript enviado al usuario y permite la hidratación parcial, mezclando HTML estático y JavaScript del lado del cliente en base a cada componente.
también es compatible. Cualquier cosa que se renderice a HTML se puede usar en el servidor de esta manera. El usuario no ve JavaScript en su carga final. Ahora, algunas cosas que realmente podrían querer que sean dinámicas. Por ejemplo, se supone que se pueden hacer clic en ellas. Y las tenemos generando emojis aleatorios, pero no sucede nada cuando hago clic. Entonces, es esta idea de que realmente quieres alguna funcionalidad. No estamos diciendo que elimines todo el JavaScript de la página. Pero la postura que tomamos es que la interactividad en JavaScript debería ser opcional, no a nivel de sitio o a nivel de página, sino a nivel de componente por componente.
Entonces, lo que tenemos aquí es la idea de tomar un componente escrito en un framework como React o pre-actores. Y agregarle un modificador aquí para promoverlo al cliente. Digamos que haremos idle aquí. Lo que hace esto es generar no solo el marcador de posición, sino también, verás aquí, código para hidratar este componente en la página. Entonces, ahora tenemos un componente completamente interactivo. Todo funciona en el cliente. Y verás aquí en el panel de red, un seguimiento de red real, que muestra cómo se carga esto. En realidad se está ejecutando en el navegador. Esto es desarrollo. Por lo tanto, estamos siendo un poco más agresivos en el JavaScript que enviamos en producción. Esto se empaquetaría, minimizaría y se eliminaría del árbol.
Otra cosa genial aquí es la idea de visible. Si lo escribes correctamente, visible. Y esto, lo haré aquí. A medida que te desplazas hacia abajo, solo será cuando llegues al componente real que toma ese costo y realmente hidrata esos componentes. Entonces, si algo está debajo del pliegue, en realidad nunca pagarías el precio de cargarlo hasta que realmente interactúes con él y lo veas en tu pantalla. Hay muchas más cosas geniales como esta en Astro que simplemente no tengo tiempo para mostrarte. Ni siquiera hemos llegado a cómo funciona el estilo de ámbito en el marcado por defecto. Todo esto se trata de ayudarte a construir un sitio que tenga la menor cantidad de JavaScript y el menor peso posible que deba enviarse al usuario. El superpoder de Astro es algo llamado hidratación parcial. Esta es esa capacidad que viste de mezclar HTML estático y JavaScript del lado del cliente en base a cada componente. Por defecto,
11. Astro: Hidratación opcional y Salida HTML-First
Short description:
Cero JavaScript del lado del cliente de forma predeterminada. Opta por componentes individuales para la hidratación. Astro es una forma moderna de construir sitios web más rápidos con una salida HTML-First. Te permite usar React en el servidor o en el cliente, o ambos. Optar por componentes individuales para la hidratación es el superpoder de la hidratación parcial y la columna vertebral de Astro. Visita astro.build para obtener una vista previa temprana.
Todo lo que construyas con Astro es 100% HTML. Cero JavaScript del lado del cliente de forma predeterminada. Pero luego tienes la capacidad de opcionalmente hidratar componentes individuales que lo necesiten. Por ejemplo, algún tipo de carrusel de imágenes o algo con interactividad, tal vez recuperación de datos del lado del cliente. Puedes optar por eso a nivel de componente. Esto es algo que obtenemos de forma gratuita porque hemos cambiado la forma en que pensamos en lo que estás construyendo. No es una gran aplicación JavaScript que construyes con Astro, en realidad estás construyendo un sitio web, un sitio web que sigue algo llamado arquitectura de islas. Este término fue acuñado por Jason Miller de Preact y Google. Y se trata de pensar en tu sitio web no como una gran aplicación, sino como una serie de componentes en la página, algunos de ellos renderizados estáticamente sin peso del lado del cliente, pero otros pueden ser hidratados individualmente casi como islas aisladas entre sí. Entonces, en lugar de una gran aplicación, tienes muchas aplicaciones pequeñas, mini componentes de React que se renderizan individualmente y aislados entre sí. Por lo tanto, no se bloquean entre sí, los componentes más pequeños se hidratan mucho más rápido, mientras que uno más grande y lento tarda un poco más. Todos están aislados entre sí y se hidratan de forma progresiva a medida que se cargan. Esto es algo que obtenemos de forma gratuita al pensar de esta manera. Esta idea de islas y componentes y una salida HTML-First real. Ese es el superpoder de Astro.
Entonces, para resumir, Astro es una forma moderna de construir sitios web más rápidos. De forma predeterminada, todo lo que construyas con Astro no tiene JavaScript del lado del cliente. Todo se basa y se enfoca en HTML, pero con la capacidad de optar por diferentes componentes para la representación del lado del cliente. Puedes usar React en el servidor, puedes usarlo en el cliente, puedes hacer ambas cosas. Puedes mezclarlo en tu markdown. Puedes hacer todas estas cosas a nivel de componente que son realmente difíciles de hacer en otros frameworks. Y esa idea de optar por componentes individuales para la hidratación en lugar de enviar una aplicación completa, ese es el superpoder de la hidratación parcial que es el núcleo de lo que Astro trata.
Una de las desventajas de grabar esta charla con tanta anticipación es que en realidad no sé cuál será el estado de este proyecto cuando veas este video. No puedo comprometerme a nada en este momento, pero lo que puedo decir es que visites astro.build para obtener una vista previa temprana de en qué estamos trabajando. No podemos esperar para poner esto en tus manos y ver qué construyes con esta nueva forma de construir sitios web utilizando la hidratación parcial y componentes de React en el servidor. Espero que hayas disfrutado esta charla. Que tengas un excelente resto de tu conferencia y gracias por ver.
Vite is a next-generation build tool that leverages native ES modules for improved performance. It eliminates the need for bundling and improves hot module replacement. Vite provides an opinionated default configuration while still allowing advanced customization through plugins. It is framework agnostic and can be used for React and other applications. Vite is being adopted by Next.js and Create React App, and integration with Nuxt 3 offers significant speed improvements.
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.
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.
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.
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.
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
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 🤐)
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.
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.
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.
En esta masterclass, aprenderás cómo construir tu primer dapp de pila completa en la blockchain de Ethereum, leyendo y escribiendo datos en la red, y conectando una aplicación de front end al contrato que has desplegado. Al final de la masterclass, entenderás cómo configurar un entorno de desarrollo de pila completa, ejecutar un nodo local e interactuar con cualquier contrato inteligente usando React, HardHat y Ethers.js.
La Biblioteca de Pruebas de React es un gran marco para las pruebas de componentes de React porque responde muchas preguntas por ti, por lo que no necesitas preocuparte por esas preguntas. Pero eso no significa que las pruebas sean fáciles. Todavía hay muchas preguntas que tienes que resolver por ti mismo: ¿Cuántas pruebas de componentes debes escribir vs pruebas de extremo a extremo o pruebas de unidad de nivel inferior? ¿Cómo puedes probar una cierta línea de código que es difícil de probar? ¿Y qué se supone que debes hacer con esa persistente advertencia de act()? En esta masterclass de tres horas, presentaremos la Biblioteca de Pruebas de React junto con un modelo mental de cómo pensar en el diseño de tus pruebas de componentes. Este modelo mental te ayudará a ver cómo probar cada bit de lógica, si debes o no simular dependencias, y ayudará a mejorar el diseño de tus componentes. Te irás con las herramientas, técnicas y principios que necesitas para implementar pruebas de componentes de bajo costo y alto valor. Tabla de contenidos- Los diferentes tipos de pruebas de aplicaciones de React, y dónde encajan las pruebas de componentes- Un modelo mental para pensar en las entradas y salidas de los componentes que pruebas- Opciones para seleccionar elementos DOM para verificar e interactuar con ellos- El valor de los mocks y por qué no deben evitarse- Los desafíos con la asincronía en las pruebas de RTL y cómo manejarlos Requisitos previos- Familiaridad con la construcción de aplicaciones con React- Experiencia básica escribiendo pruebas automatizadas con Jest u otro marco de pruebas unitarias- No necesitas ninguna experiencia con la Biblioteca de Pruebas de React- Configuración de la máquina: Node LTS, Yarn
Comments