Escalando el Desarrollo de React con Nx

This ad is not shown to multipass and full ticket holders
React Summit US
React Summit US 2025
November 18 - 21, 2025
New York, US & Online
The biggest React conference in the US
Learn More
In partnership with Focus Reactive
Upcoming event
React Summit US 2025
React Summit US 2025
November 18 - 21, 2025. New York, US & Online
Learn more
Bookmark
Rate this content

En esta charla, te mostraré cómo evitar una base de código monolítica, cómo modularizar tu aplicación de React y cómo eso podría incluso ayudarte a acelerar tus compilaciones de CI: así te ayudará a escalar el desarrollo a medida que tu equipo crece. Lo haremos de una manera muy concreta y práctica, utilizando Nx como nuestra herramienta.

This talk has been presented at React Summit Remote Edition 2021, check out the latest edition of this React Conference.

FAQ

NX es una herramienta de desarrollo de código abierto diseñada para trabajar con Monorepos, aunque también funciona bien sin Monorepos. Se utiliza para mejorar la arquitectura de desarrollo, automatizar procesos y aumentar la productividad de los desarrolladores mediante la gestión eficiente de dependencias y la optimización de procesos de construcción y prueba.

Para instalar y configurar un espacio de trabajo NX, se utiliza el comando 'create NX workspace', se le asigna un nombre al espacio de trabajo y se selecciona un administrador de paquetes como Yarn, pnpm o npm. Durante la instalación, se puede elegir entre comenzar con un espacio de trabajo vacío o usar preajustes preconfigurados.

NX ayuda a escalar el desarrollo de proyectos con grandes equipos mediante la automatización de una buena arquitectura, proporcionando herramientas modernas y mejorando la experiencia de desarrollo, lo que resulta en una mayor productividad y velocidad en el desarrollo de software.

En NX, las bibliotecas se generan utilizando el comando 'nx generate' o 'nx g'. Estas bibliotecas pueden ser configuradas para ser publicables o permanecer como bibliotecas de espacio de trabajo internas. NX también permite una fácil importación de estas bibliotecas en aplicaciones utilizando mapeos de ruta configurados en 'tsconfig-base'.

Un Monorepo es un repositorio que contiene múltiples proyectos o bibliotecas. NX es particularmente eficaz en este contexto, ya que facilita la gestión de dependencias, la automatización de tareas repetitivas y la optimización de las pruebas y compilaciones, lo que hace que sea más fácil escalar y mantener la calidad en entornos de Monorepo.

NX mejora la velocidad utilizando técnicas como la detección de cambios afectados para optimizar las pruebas y compilaciones. Además, emplea una caché distribuida (con la opción de utilizar Nx Cloud) para acelerar aún más las compilaciones repetitivas, asegurando que solo se reconstruyan o retesteen los elementos afectados por cambios recientes.

NX no tiene integraciones específicas para despliegue directo en CI/CD, pero facilita la creación de scripts de despliegue personalizados que pueden integrarse en cualquier proceso de CI/CD, permitiendo la construcción y prueba automatizadas dentro del flujo de trabajo de integración continua.

Juri Strumpflohner
Juri Strumpflohner
32 min
14 May, 2021

Comments

Sign in or register to post your comment.
  • Dmytro
    Dmytro
    DataArt
    I feel like NX develops and changes really fast and some recent material are not quite as up to date
  • Dmytro
    Dmytro
    DataArt
    Thank you for a talk. Still trying to comprehend what benefits NX offers
Video Summary and Transcription
Esta charla discute el desarrollo de React programado con NX e introduce Annex, una herramienta de desarrollo de código abierto para Monorepos. Cubre temas como generar espacios de trabajo y bibliotecas, crear aplicaciones Next.js de cara al público, imponer restricciones y definir límites, realizar pruebas con linting, mejoras de velocidad con el comando 'affected' y el almacenamiento en caché, adaptar NX a un Monorepo existente, migración, pruebas, implementación y publicación, bibliotecas publicables en NX, federación de módulos Webpack 5, API de contexto de React y gestión de etiquetas, alcance y dependencias.
Available in English: Scaling React Development with Nx

1. Introducción al desarrollo de Schedule React con NX

Short description:

Estoy muy emocionado de hablar sobre el desarrollo de Schedule React específicamente con NX. Soy Jurijs Tromfloner, un Experto en Desarrollo de Google en tecnologías web. Trabajo en Nowll, ayudando a los equipos a aprender, crecer y tener éxito. Quiero hablar sobre Annex, nuestra herramienta de desarrollo de código abierto diseñada para Monorepos. Conduce a una mejor arquitectura con aplicaciones delgadas y bibliotecas de espacio de trabajo bien definidas. Te mostraré cómo trabajar con Annex creando un espacio de trabajo y usando preajustes.

Muy bien, estoy muy emocionado de estar aquí hoy y poder hablarles sobre el desarrollo de Schedule React específicamente con NX. Antes de comenzar, permítanme presentarme. Mi nombre es Jurijs Tromfloner. Soy un Experto en Desarrollo de Google en tecnologías web. También soy instructor en AgCat y Embajador de Cypress.

En este momento, trabajo en Nowll como arquitecto de JavaScript y gerente de ingeniería, y en Nowll tratamos de ayudar a los equipos a aprender, crecer y tener éxito. Y lo hacemos ayudando a planificar sus hojas de ruta, identificar restricciones técnicas. También brindamos capacitaciones en talleres, por ejemplo, en conferencias, o charlas en conferencias, como la que estoy haciendo ahora. Sin embargo, lo que prefiero es trabajar como parte integrada de tu equipo, donde podemos identificar las cosas a medida que surgen.

Entonces, ¿cómo escalamos el desarrollo, especialmente con equipos grandes, y específicamente desde una perspectiva técnica, puramente? Y así identifico básicamente esos tres pilares, básicamente impulsar y automatizar una buena arquitectura, luego también tener herramientas modernas a mano, y una mejor experiencia de desarrollo hará que nuestros desarrolladores sean más productivos. Y finalmente, la velocidad en general. Y me gustaría hablar principalmente sobre Annex hoy, que es nuestra herramienta de desarrollo de código abierto, diseñada para Monorepos, pero también funciona sin Monorepos, de hecho, muy bien.

Entonces, esta es básicamente la estructura que generalmente obtienes cuando generas un nuevo proyecto, ¿verdad? Entonces, lo que llamo esto es como una estructura monolítica, tienes esa aplicación, tienes diferentes tipos de carpetas, donde cada una de esas carpetas representa una funcionalidad y un límite de características, generalmente. Ahora, con Annex es un poco diferente, allí tenemos los bloques de construcción de aplicaciones y bibliotecas. Ahora, la aplicación, como puedes ver aquí, se encuentra en la parte superior, y luego están las bibliotecas individuales allí abajo. Y la razón de esto es que conduce a una mejor arquitectura en general, porque las bibliotecas representan un límite mucho más fuerte que solo las carpetas. Con las carpetas, es muy difícil controlar lo que se puede exportar y también señalar lo que otros desarrolladores pueden exportar. Y así, en Annex, lo que tienes generalmente es una aplicación muy delgada en la parte superior, y luego tienes muchas de esas bibliotecas de espacio de trabajo bien definidas, donde se encuentra la lógica real. Y esas bibliotecas de espacio de trabajo realmente no necesitan ser publicadas en ningún lugar, pueden, pero pueden vivir dentro del espacio de trabajo y la aplicación simplemente las enlaza. Y así, al final, la aplicación, si quieres, es realmente solo la que se puede implementar. Y luego la lógica está realmente en esas bibliotecas. Y lo que a menudo sucede a partir de esa situación, es que las personas comienzan a crear varias de esas aplicaciones y simplemente eligen las bibliotecas que realmente necesitan. Y esto, por ejemplo, te permite implementar la misma infraestructura varias veces e incluso escalarla de diferentes formas. Por ejemplo, es posible que deseemos escalar más la parte de fases públicas que tal vez esa parte administrativa, que solo es utilizada por usuarios internos. Pero hoy realmente me gustaría ser más práctico y mostrarte cómo es trabajar con Annex. Y para comenzar, por supuesto, simplemente instalas el espacio de trabajo de Annex y esto se hace mediante create Annex workspace, le das un nombre, digamos react-summit. Y también paso aquí un administrador de paquetes, que en este caso es Yarn, pero también podría ser pnpm o npm. Y esto ahora instala el espacio de trabajo de Annex básicamente configurado y allí se nos hacen algunas preguntas. Entonces podemos comenzar con un espacio de trabajo vacío, pero también podemos usar uno de esos preajustes que son bastante útiles, ya que ya están preconfigurados. Y así elegimos react y podemos darle un nombre, por ejemplo, demo app.

2. Workspace y biblioteca generados

Short description:

Y ahora tenemos un par de preguntas más, pero ya las he abordado para ahorrar tiempo. En el espacio de trabajo generado, tenemos la aplicación de cursos, que es una aplicación de React, y una configuración de prueba de extremo a extremo con Cypress. La carpeta de bibliotecas está vacía. NX tiene generadores que nos permiten crear fácilmente bibliotecas. He generado la biblioteca 'course item' con su estructura y componentes. El mapeo de ruta tsconfig-base facilita la importación de bibliotecas en nuestras aplicaciones. Podemos importar la biblioteca 'course item' con un prefijo, como si fuera una biblioteca publicable.

Y ahora tenemos un par de preguntas más, como qué tipo de estilos queremos usar, y así sucesivamente. Ahora, voy a interrumpir esto aquí, porque ya lo he hecho y quiero ahorrar tiempo de instalación de npm.

Así es como se ve un espacio de trabajo generado. Puedes ver las carpetas de aplicaciones y bibliotecas, de las que mencioné antes. De hecho, si abro esto, ya tenemos la aplicación de cursos generada para nosotros cuando configuramos ese espacio de trabajo. Es una aplicación de react. Y también tenemos esa configuración de prueba de extremo a extremo para nosotros, que en este caso está basada en cypress y ya está configurada para probar nuestra aplicación de cursos. La carpeta de bibliotecas todavía está vacía.

Para comenzar, puedo simplemente hacer yarn start o el equivalente de nx sería nx serve y courses, que es mi aplicación de cursos. Luego, si voy a localhost 4200, puedo ver la aplicación siendo servida una vez que se compile y se inicie. Y aquí está, mi bienvenida a la aplicación de cursos. Ahora, en este momento, no tengo ninguna biblioteca. Y ese es otro punto muy fuerte de nx, tiene esos generadores. Y así, lo que puedo hacer es escribir nx generate o g para generar. Ahora estamos en react, que es el complemento y luego biblioteca para la biblioteca que queremos ejecutar. Y llamémosla course item, que es nuestra biblioteca que queremos generar. Y aquí podría proporcionar más opciones para personalizar la generación. Pero por ahora, vamos con los valores predeterminados.

Y lo que ves aquí ahora es que se genera esa biblioteca course item para nosotros, que tiene esta estructura, son archivos de configuración. Luego hay una carpeta de origen, que tiene el archivo index TS aquí, que es como la API pública. Y aquí es lo que realmente quieres exportar para que otros lo consuman mientras que todo lo que está dentro de esa carpeta lib aquí es privado solo para esa biblioteca. Y también tenemos aquí componentes prácticos ya generados para nosotros. Ahora, la parte muy interesante aquí es que en el mapeo de ruta tsconfig-base aquí en el archivo de configuración, ya tenemos configurado un mapeo de tipo a ruta. Y esto nos permite importar fácilmente una biblioteca en nuestras aplicaciones sin tener que usar esa ruta fija de la ruta relativa hacia ellas. Así que voy a ir a los cursos aquí. Abramos aquí el archivo apt TSX. Y eliminemos toda esa parte aquí que realmente no necesitamos por ahora. Y lo que quiero hacer aquí es importar nuestra course item. Y así puedes ver, puedo importarlo con ese prefijo aquí, que acabamos de ver antes. Así que realmente parece como si esta fuera una biblioteca publicable, pero en realidad solo está enlazada.

3. Creando una aplicación Next.js pública

Short description:

Lo referenciamos aquí y vemos nuestro elemento de curso renderizado dentro de la aplicación. NX realiza un seguimiento interno de las dependencias y las visualiza con el comando de gráfico de profundidad. Podemos crear una aplicación Next.js pública utilizando el nuevo complemento Next. Después de la instalación, generamos la aplicación utilizando el complemento NX Console Visual Studio Code. La aplicación generada incluye la aplicación pública, que es una aplicación Next.js con páginas. Podemos insertar el elemento de curso en la página de índice de la aplicación pública.

desde dentro del espacio de trabajo. Y luego lo referenciamos aquí. Y obviamente, si lo inicio de nuevo, ahora veré cómo se vincula a nuestra aplicación. Así que si voy aquí y actualizo, ahora vemos que nuestro elemento de curso se ha renderizado directamente dentro de la aplicación.

La otra parte interesante también es que NX realiza un seguimiento interno de las dependencias y de cómo se relacionan entre sí. Así que puedo usar aquí el comando de gráfico de profundidad para visualizar esas dependencias que NX tiene internamente. Y aquí, por ejemplo, esta es la situación actual que tenemos. Tenemos la aplicación de cursos, luego tenemos una dependencia implícita en esa parte de pruebas de extremo a extremo que prueba nuestra aplicación de cursos, y luego tenemos la biblioteca de elementos de curso que utiliza la aplicación de cursos. Esto es muy útil especialmente a medida que nuestro espacio de trabajo crece, así que exploremos eso.

Lo que podríamos hacer, por ejemplo, es crear una aplicación Next.js pública. Para hacer eso, podemos instalar un nuevo complemento de Next. Y por cierto, estos son complementos que ya proporcionamos, pero hay toneladas de complementos de la comunidad para una variedad de casos de uso, así que definitivamente revisa esos también. Ahora que tenemos Next instalado, podemos generar la aplicación. Nuevamente, podría usar la línea de comandos, pero a veces es más práctico usar el complemento NX Console Visual Studio Code. Eso me permite ejecutar la generación aquí, y vemos todos los generadores posibles aquí. Y quiero ir con el nuevo Next para generar una aplicación Next. Llamémosla 'public'. Y aquí el estilo puede permanecer igual. Todavía queremos una prueba de Cypress. Ejecutor de JS, ESLint y también JS para testing. Y aquí abajo, puedes ver una vista previa de lo que realmente se ejecutaría cada vez que ejecuto un comando. Así que también podemos aprender sobre los nuevos comandos aquí abajo. Así que simplemente ejecutemos esto. Generará mi nueva aplicación, y mientras se instala, vamos aquí y exploremos lo que se genera. Tenemos la aplicación de cursos, y ahora puedes ver que también tenemos esa aplicación pública. Esta es una aplicación Next.js. Aquí vemos las páginas. Por ejemplo, vayamos a la página de índice aquí. Y nuevamente, eliminemos aquí todas esas cosas que realmente no necesitamos. Y haremos lo mismo aquí para insertar básicamente nuestro elemento de curso. Entonces, nuevamente, lo importé de la misma manera como una referencia dentro de una aplicación Next.js.

4. Iniciar la aplicación Next.js y generar bibliotecas

Short description:

Iniciemos nuestra aplicación Next.js y exploremos el gráfico de dependencias. Generamos bibliotecas adicionales para observar la evolución del gráfico. Las bibliotecas incluyen 'core', 'coupons' y 'sales'. Conectamos las bibliotecas dentro de la aplicación, creando conexiones reales entre todas las bibliotecas.

Entonces, ahora iniciemos nuestra aplicación Next.js. Ejecutamos 'yarn serve public', que es nuestra aplicación Next. También puedes ver la uniformidad de los comandos. Siempre son los mismos, independientemente de si usas una configuración de React, una configuración de backend de Node o una aplicación Next.js, lo cual es muy importante en términos de aprendizaje que el equipo debe hacer a medida que crece.

Ahora puedes ver que la aplicación pública se está ejecutando. Esta es nuestra aplicación Next, que también utiliza ese elemento de curso. De hecho, podríamos explorar el gráfico de dependencias nuevamente. Si ejecuto 'Next.dev graph', podemos iniciarlo aquí. Ahora la situación se ve bastante diferente porque ahora tenemos la aplicación de cursos y la aplicación pública. Ambas tienen sus pruebas de extremo a extremo y ambas hacen referencia al elemento de curso.

Generemos un par de bibliotecas más para ver cómo evoluciona el gráfico de dependencias. Nuevamente, estoy usando la consola NX. No quiero generar solo una biblioteca de espacio de trabajo. Llamémosla 'core', que no es específica de ningún framework en particular. Por lo tanto, podría compartirse entre frameworks o incluso entre un backend y un frontend. Ahora tenemos generada esa biblioteca 'core' del curso. También quiero generar una nueva biblioteca, que esta vez es una biblioteca de React, y la llamo 'coupons'. Esta vez quiero estructurarla en un directorio de administración porque será una biblioteca que quiero usar desde la parte de administración de la aplicación. Luego quiero tener otra, que es 'sales', que es la que quiero usar nuevamente dentro del directorio de administración. Bien, si cerramos esto y reducimos un poco la ventana, ahora podemos ver que tenemos en la carpeta de bibliotecas esas bibliotecas de administración, 'coupons' y 'sales', que son bibliotecas, y la biblioteca 'core'. Si volvemos a utilizar el gráfico de dependencias, veremos que la estructura cambió un poco nuevamente porque ahora tenemos las bibliotecas, las aplicaciones que hacen referencia a esa biblioteca de elementos de curso, pero luego tenemos esas tres bibliotecas que están allí, pero aún no están conectadas.

Hagamos eso. Vamos aquí a la aplicación. Primero, vayamos a la parte de 'coupons' y hagamos referencia a nuestra biblioteca 'core' aquí. Importaremos 'core' y lo llamaremos aquí. Lo mismo haremos para 'sales', lo referenciaremos aquí también. Y finalmente, vamos aquí a la aplicación de cursos y la referenciamos desde nuestra aplicación. Ahora están conectadas. Podemos ir aquí y nuevamente iniciar el gráfico de dependencias. Ahora deberíamos ver conexiones reales entre todas esas bibliotecas. Ahora vemos que la aplicación de cursos hace referencia a 'admin coupons', 'admin sales', 'core' y la parte pública y la parte de cursos comparten ese elemento de curso allí abajo.

5. Imponiendo Restricciones y Definiendo Límites

Short description:

A medida que tu espacio de trabajo crece, es importante imponer restricciones en las importaciones. Asignar tipos y alcances a las bibliotecas y aplicaciones ayuda a definir los límites. Las reglas de linting se pueden utilizar para hacer cumplir estos límites. Por ejemplo, una biblioteca de utilidades solo puede hacer referencia a otras bibliotecas de utilidades, no a bibliotecas de características. De manera similar, los alcances como admin y public solo pueden hacer referencia a bibliotecas dentro de sus respectivos alcances. Esta separación asegura un espacio de trabajo bien estructurado.

Ahora esto ya es una configuración muy buena. En algún momento, sin embargo, a medida que tu espacio de trabajo crece, es posible que desees imponer restricciones. Por ejemplo, no quieres que la parte pública importe la biblioteca de ventas de administración. Y a medida que tu espacio de trabajo crece, esto se vuelve realmente importante.

Entonces, a continuación, hay una forma de imponer esas restricciones. Primero, lo que debes hacer es asignar tipos a esas bibliotecas y aplicaciones. Podemos ir aquí a la configuración NxJSON y comenzar a asignar tipos. Estas son solo cadenas arbitrarias, por lo que realmente puedes definirlas como desees. Por lo general, uso un prefijo y un sufijo aquí. Por ejemplo, para las aplicaciones, simplemente les doy el tipo 'application'. Luego, defino el tipo 'feature', que es para nuestras bibliotecas de administración de cupones, ventas y elementos de cursos, que representan una característica encapsulada dentro de nuestro espacio de trabajo. Luego tengo un tipo 'utility', que es para el núcleo, que es algo que se puede compartir entre varias bibliotecas, como funcionalidad de utilidad general. También puedo asignar alcances. Por ejemplo, tengo una etiqueta adicional llamada 'scope', que llamo 'admin' para todas las partes relacionadas con la administración aquí arriba. Lo mismo para el alcance 'public' para todas las partes públicas aquí abajo. Y finalmente, también tendremos algo que se comparte, como por ejemplo, el elemento de curso y las partes del núcleo que se comparten realmente. Les asigno la etiqueta 'shared' aquí.

Ahora necesitamos imponer las restricciones y podemos hacerlo a través del linting. Si vamos al archivo eslintrc, aquí tenemos las reglas de imposición de límites de módulo que proporciona NX. Como puedes ver, puedes definir las restricciones. Por ejemplo, podemos decir que una biblioteca del tipo 'utility' solo puede hacer referencia a un tipo 'utility'. No queremos que una biblioteca de utilidades haga referencia a una biblioteca de características, sino al revés, ¿verdad? Las bibliotecas de características pueden importar utilidades. Luego podemos definir una vez la característica. Entonces, el tipo 'feature' puede hacer referencia a características y utilidades. Luego, para los alcances, podemos decir que el alcance 'admin' solo puede hacer referencia al alcance 'admin'. Y finalmente, el alcance 'public' solo puede hacer referencia al alcance 'public'. De esta manera, separamos los diferentes alcances de nuestro espacio de trabajo. Obviamente, también necesitamos agregar algunos alcances compartidos aquí, porque el elemento de curso y la utilidad del núcleo en general pueden ser compartidos entre esos diferentes alcances dentro de nuestro espacio de trabajo.

6. Pruebas con Linting

Short description:

Podemos probar las reglas de linting en nuestra aplicación Next.js al romperlas intencionalmente y ejecutar el comando NX lint. Esto nos permite controlar la arquitectura de nuestro proyecto a medida que crece.

Entonces, ¿cómo podemos probar eso? Con el linting en realidad. Y ahora rompamos la regla. Vamos a nuestra aplicación Next.js aquí arriba. Vamos a entrar en el archivo index.ts y vamos a importar el admin sales. Ahora hemos creado básicamente una conexión desde public a admin sales lo cual está prohibido por las reglas de linting. Y ahora si ejecuto NX lint public que es nuestra aplicación Next.js pública, inicia el linting. Y lo que verás ahora es un error básicamente en nuestro archivo index.ts que dice que un proyecto etiquetado con el alcance public solo puede depender realmente de bibliotecas etiquetadas con el alcance public o alcance shared. También lo verás directamente en el editor. A veces Visual Studio es un poco lento para actualizar los alcances una vez que los defines pero también lo verías directamente aquí. Y esto obviamente es una gran ventaja y déjame en realidad eliminar eso para que nuestro linting funcione de nuevo. Esto es una gran ventaja porque te permite controlar tu arquitectura a medida que crece.

7. Velocidad, Gráfico de Dependencias y Caché

Short description:

La siguiente parte trata sobre la velocidad de desarrollo con Nx. Nx proporciona el comando 'affected' para reconstruir y volver a probar solo las partes necesarias según el gráfico de dependencias. También admite el almacenamiento en caché, que se puede distribuir utilizando Nx Cloud para una ejecución más rápida. Al conectar el espacio de trabajo a Nx Cloud, la caché se puede compartir entre los compañeros de trabajo, lo que resulta en ejecuciones inmediatas. También discutimos cómo las aplicaciones y las bibliotecas diferencian a Nx de los espacios de trabajo tradicionales y la importancia de definir reglas de límites para mejorar la arquitectura y evitar referencias enredadas. Además, exploramos la visualización de dependencias con el gráfico de dependencias y las potentes capacidades de generación de Nx.

La siguiente parte es, obviamente, la velocidad. A medida que creces y quieres escalar tu espacio de trabajo, no puedes construir todo cada vez, ¿verdad? Si cambias algo aquí abajo, no puedes simplemente construir todo lo que está conectado a él. Entonces, Nx tiene un comando llamado 'affected', pero primero permíteme confirmar todas estas partes y simulemos que estamos desarrollando una función.

Así que creemos una nueva rama, mi función y ahora aquí voy a hacer un cambio digamos en la biblioteca de elementos del curso. Así que vamos aquí a elementos del curso y digamos simplemente bienvenido a elementos del curso, así. Hicimos un cambio y ahora Nx puede usar el gráfico de dependencias para averiguar qué necesita volver a probar y volver a construir. Y eso se puede hacer mediante el comando llamado 'affected' de Nx y también podemos aplicarlo al gráfico de profundidad. Si digo 'affected depth graph', ahora puedes ver una subsección del gráfico que se vería afectada por los comandos. También podemos ver todos ellos. Los veo coloreados de manera un poco diferente. Obviamente, Nx determina que si este cambia, no necesita construir ni probar este, sino solo las rutas que van hacia arriba. Y así, de hecho, si echamos un vistazo aquí y ejecuto 'yarn Nx affected test', solo ejecutará realmente estas tres bibliotecas y ejecutará las pruebas para ellas.

La parte interesante también es que, si vuelvo a ejecutar esto, hay otro concepto que mejora la velocidad, que es nuestra caché. Así que si vuelvo a ejecutar esto, verás que es inmediato, porque los tres proyectos se tomaron de la caché. Ahora, esta caché por defecto solo se almacena localmente. Entonces, en la carpeta de módulos de nodo 'cache.nx', está la caché en realidad, que determina qué necesita reconstruir. Pero puedes distribuir eso y puedes ir directamente, por ejemplo, a Nx Cloud. Si voy a Nx.app, puedes conectar el espacio de trabajo y simplemente hago clic aquí una vez que haya iniciado sesión para conectar el espacio de trabajo. No tengo Nx Cloud. Así que solo estoy usando el comando aquí para instalarlo ya que estoy usando Yarn. Esto es lo que estaría usando. Así que déjame pegarlo aquí y luego ejecutarlo. Ahora instala la biblioteca de Nx Cloud. y la configura directamente para mí. Y ahora, si vuelvo a ejecutar el 'affected test', ahora probará todas las bibliotecas que están en mi espacio de trabajo.

De acuerdo, hemos cambiado algunas infraestructuras fundamentales aquí como algunas bibliotecas de configuración básica. Entonces, Nx necesita probar todo de nuevo porque podríamos haber instalado un paquete, ¿verdad? Y una vez que se haya instalado, en realidad podría simular como si fuera un compañero de trabajo, ¿verdad? Algunos de mis compañeros de trabajo ya ejecutaron esto el día anterior, la caché se distribuye en Nx Cloud. Así que voy a borrar esa caché y volver a ejecutarlo de nuevo. Y ahora puedes ver que la ejecución es básicamente inmediata, porque todos los productos se obtuvieron de la caché del mundo real. También obtienes una vista agradable, más información basada en Nx Cloud sobre la vista, qué se construyó, si fue un acierto de caché o no, y mucho más. Entonces, lo que cubrimos básicamente es cómo las aplicaciones y las bibliotecas diferencian a Nx de los espacios de trabajo tradicionales, cómo puedes definir reglas de límites para mejorar esa arquitectura y básicamente protegerte contra algunas referencias enredadas, también cómo puedes visualizar las dependencias con el gráfico de dependencias, las capacidades de generación de los generadores de Nx, que son muy potentes, es como si ya tuvieras generadores que no pudiste mostrar debido a la limitación de tiempo, como configuraciones para Cypress, como configuraciones para Cypress para Just, para Storybook que genera automáticamente tus historias a partir de tus componentes y mucho más.

8. Explorando Mejoras de Velocidad y Comenzando

Short description:

Tus mejoras de velocidad a través de los comandos afectados y el almacenamiento en caché distribuido por Nx Cloud. Más por explorar. Información principal: sitio web nx.dev, aplicación Nx para Nx Cloud, canal de YouTube Nowrl, curso Acai. Comienza con NPX CreateNx Workspace o NPX add Nx a Monorepo. Conéctate en Twitter para preguntas. Yuri preguntó sobre el uso de Monorepo, con resultados interesantes.

Y finalmente, obviamente, tus mejoras de velocidad a través de los comandos afectados y también el almacenamiento en caché distribuido por Nx Cloud. Pero como mencioné, realmente solo hemos rascado la superficie, ¿verdad? Hay mucho más por explorar. Estos son algunos de los datos principales que puedes usar, como nuestro sitio web nx.dev, la aplicación Nx para la parte de Nx Cloud. Y por cierto, para Nx Cloud, siempre puedes comenzar con él. Es completamente gratuito, no tienes que usar ninguna tarjeta de crédito para obtener cinco horas al mes de forma gratuita. Y luego, obviamente, puedes optar por pagar más si te gusta el producto. También tenemos nuestro canal de YouTube Nowrl, los videos oficiales de nuestro canal de YouTube Nowrl y también un curso de Acai que es completamente gratuito, que puedes usar para profundizar más en los detalles de cómo funciona Nx.

Para comenzar, nuevamente, usa NPX, CreateNx Workspace para configurar un nuevo espacio de trabajo fresco. Eso obviamente te brinda más beneficios, pero si solo quieres probarlo, especialmente si estás interesado en las capacidades de almacenamiento en caché de Nx, también puedes usar NPX add Nx a Monorepo para comenzar. Y convertirá, por ejemplo, un espacio de trabajo existente de Yarn y lo mejorará con las capacidades de Nx. Y aquí hay un par de enlaces que explican básicamente cómo funciona. Y también, por ejemplo, convertimos un repositorio de Storybook y también el repositorio de Reemotion. Así que definitivamente échales un vistazo.

Gracias por tu atención. Y si tienes alguna pregunta, no dudes en conectarte conmigo en Twitter. Envíame tus preguntas en Twitter y nos conectamos allí. Gracias. Yuri preguntó a las personas si están utilizando un Monorepo en su proyecto en este momento. Así que veamos los resultados. Tengo que cambiar de pantalla aquí. Sí, y estoy contento con eso. Tiene un 32%. Y no, y no creo que necesite uno, es el segundo con un 19%. Y el tercero es Monorepo con un 19%. Entonces, Yuri, ¿esto es lo que esperabas? Sí, es bastante interesante verlo. Y creo que la contribución es más o menos lo que esperaba. Sí, yo mismo también estoy usando un Monorepo, pero también estoy trabajando en un proyecto pequeño. Entonces, sigue siendo un Monorepo, ¿verdad? ¿Cuenta eso? Sí, absolutamente. Por eso también hice esta pregunta. Porque a veces la gente piensa que un Monorepo es solo para proyectos grandes y de enterprise, pero no necesariamente es el caso, ¿verdad? Incluso puedes tener tu proyecto de open-source con un par de bibliotecas y una aplicación de demostración y aún así sería un Monorepo, ¿verdad? Dependiendo de cómo quieras estructurarlo.

9. Retrofitting NX into an Existing Monorepo

Short description:

Es posible adaptar NX a un Monorepo existente con el comando nx-add-to-monorepo, que agrega una configuración mínima para proporcionar algunos beneficios de NX. Sin embargo, para una experiencia más completa con los generadores, se recomienda configurar un nuevo Monorepo y migrar los productos uno por uno.

Genial. Ahora vamos a pasar a las preguntas de nuestra audiencia. Y la primera es, Voy a intentar pronunciar este nombre de usuario, Soshikropka. ¿Qué tan sencillo es integrar NX en un Monorepo existente y grande? Entonces, adaptar NX a un Monorepo existente. ¿Podemos hacer eso? Sí, hay algunas posibilidades para hacerlo. Como mencioné en mi charla, está el comando nx-add-to-monorepo, como el comando npx-add-to-monorepo, donde básicamente estamos agregando, especialmente en los espacios de trabajo de Yarn, una configuración mínima, que te brindaría algunos de los beneficios de NX, como por ejemplo, la caché de cálculos, la ejecución de tareas en paralelo y cosas así. Básicamente, la organización de la ejecución de los scripts de Node, que podrías tener en ese espacio de trabajo de Yarn. Pero obviamente, si quieres tener una experiencia más completa, como con los generadores, y eso es lo que define la experiencia de NX, entonces obviamente, es mejor configurar un nuevo Monorepo y migrar los productos uno por uno.

QnA

Migrating, Testing, Deployment, and Publishing

Short description:

Tenemos scripts npx para migrar una aplicación React a un Monorepo NX. La integración de pruebas de extremo a extremo con el uso de OAuth depende de Cypress y sus capacidades de simulación. NX permite el despliegue independiente de múltiples aplicaciones en un Monorepo. NX no tiene una integración específica de CI/CD, pero se puede personalizar y ampliar. NX permite publicar versiones y bibliotecas.

De acuerdo. También tenemos algunos scripts npx, por ejemplo, para migrar una aplicación React a un Monorepo NX, lo que te ayudará a realizar modificaciones de código y fusionarlas en un repositorio NX. Así que definitivamente hay algunas posibilidades y estamos trabajando, por supuesto, para hacerlo aún más fácil.

Genial. Y tal vez, Suresh Kropak, puedo darle algunos consejos sobre lo que necesita en su chat espacial. La siguiente pregunta es de Thiago elfs. ¿Qué tan difícil es integrar pruebas de extremo a extremo con otras estructuras como el uso de OAuth? ¿Qué fue lo último? Me perdí la última parte, ¿pruebas de extremo a extremo? Uso de OAuth. Bueno, eso depende de cómo funcionen tus llamadas OAuth. Por ejemplo, la configuración predeterminada al generar una nueva aplicación dentro de NX es que obtienes una prueba de Cypress y una configuración de Cypress junto con tu aplicación. Y realmente depende de cómo Cypress maneje eso. Cypress tiene algunas capacidades de simulación donde puedes simular esas llamadas o dejar que pasen en un entorno de desarrollo donde conoces los usuarios que tienes y puedes simular escenarios de extremo a extremo más realistas. Pero dicho esto, muchos de los escenarios que vemos cuando trabajamos en monorepos también son simulados. Por lo tanto, no es realmente una prueba de extremo a extremo completa en el sentido de que accedes a una base de datos y vuelves, porque tienden a ser inestables. Por lo general, nuestros usuarios tienen una configuración de Cypress que simula algunas de esas API críticas, como la autenticación, por ejemplo. Y luego básicamente tienen algunas pruebas de integración local en su configuración de front-end. Pero Cypress tiene algunas guías bastante buenas sobre cómo integrarse con escenarios de OAuth y en general con escenarios de autenticación. Así que eso no depende realmente de NX, sino más bien de cómo trabajar con OAuth y Cypress, sí.

De acuerdo, la siguiente pregunta es de Vasily Shalkov. Tienes estas múltiples aplicaciones creadas por NX. Normalmente, el despliegue y desarrollo de nuestras aplicaciones son independientes. ¿NX no tiene herramientas para ayudar con CI/CD y aún así obtener los beneficios de entregar aplicaciones de forma independiente? Sí, claro, al final, cada una de esas aplicaciones en el Monorepo vive por sí misma, básicamente. Simplemente que las bibliotecas permiten compartir código con otras. Y así siempre puedes desplegar la aplicación individual. Ahora bien, realmente no tenemos ninguna integración específica con la implementación de CI o CD. Tenemos algunos scripts de implementación, por ejemplo, para implementar en Vercel, en los que intentamos ayudar y optimizar. Pero al final, NX es una CLI que emite comandos. Y así, al final, puedes personalizarlo y adaptarlo a tus necesidades e incluso ampliarlo, como con tus comandos personalizados, agregar tu script de implementación personalizado para poder construir la aplicación, probarla, lo que sea, y luego implementarla en el entorno que necesites.

De acuerdo, genial. Tenemos una pregunta de Arik. ¿Existen capacidades para publicar versiones/bibliotecas? Sí.

Bibliotecas Publicables en NX

Short description:

En NX, puedes convertir las bibliotecas del espacio de trabajo en bibliotecas publicables o generar bibliotecas con una marca de publicable y un alcance de NPM. Estas bibliotecas se comportan como aplicaciones y se pueden construir y publicar en un registro de NPM.

Entonces, si entiendo correctamente la pregunta, como te imaginas, como bibliotecas publicables, como en NX, normalmente lo que tienes es la configuración predeterminada simplemente genera las llamadas bibliotecas del espacio de trabajo. No están destinadas a ser publicadas en ningún NPM, pero puedes decidir qué tipo de biblioteca quieres. Tal vez quieras una que se integre solo con las aplicaciones que tienes, pero que también sea publicable para que otras personas la consuman fuera del monorepo, ¿verdad? Y en ese caso, puedes convertir una existente. Básicamente, hay generadores que te permiten convertir bibliotecas en una biblioteca publicable o cuando generas la biblioteca ya pasaste una marca de publicable, un alcance de NPM, y luego se configurará de tal manera que también puedas publicarla. Y al final, esa biblioteca se comportará de la misma manera que una aplicación. Puedes construir esa biblioteca. Tiene un objetivo de construcción. Así que terminará en una carpeta del disco. Y luego simplemente haces tu publicación de NPM allí y la publicas en algún registro.

NX y Webpack 5 Module Federation

Short description:

Estamos considerando introducir una función de federación de módulos de Webpack 5 en NX. Aunque actualmente no admitimos Webpack 5 debido a restricciones de dependencias, está en nuestra lista de mejoras futuras. Ya existen algunos ejemplos de la comunidad donde las pequeñas aplicaciones en un Monorepo comparten código y se implementan como micro-frontends, federando el código mediante Webpack 5.

Genial, de acuerdo. La siguiente pregunta es de Marvin. ¿Cuándo crees que NX introducirá una función de federación de módulos de Webpack 5? Lo estamos considerando. En este momento, no admitimos Webpack 5. Hay algunas restricciones de dependencias, pero definitivamente es algo que tenemos en nuestra lista para implementar en Webpack 5 y también brindar soporte. Algunas personas ya lo han implementado. Por lo tanto, puedes cambiar la dependencia, obviamente, y utilizar Webpack 5. Simplemente no lo admitimos de forma predeterminada y no podemos garantizar que todo funcione perfectamente. Pero tenemos algunos ejemplos de la comunidad que ya se han utilizado. Además, con pequeñas aplicaciones en las que se utilizan micro-frontends que comparten código en el Monorepo, pero se implementan como micro-frontends y federan el código entre ellos con Webpack 5.

React Context API y la carpeta Lib

Short description:

La API de contexto de React funciona de la misma manera con la carpeta lib como lo hace dentro de la carpeta de la aplicación. Mover algo a la carpeta lib encapsula la lógica que deseas exponer a la aplicación. Sigue un patrón de composición, donde la aplicación consume la lógica de la carpeta lib, que no está precompilada sino que se consume directamente desde la fuente.

Genial, eso suena poderoso. Y realmente genial que sea como, no quiero decir extensible, solo cambiable, sí, genial. Y la siguiente pregunta es de Mark C. ¿Cómo funcionaría la API de contexto de React con la carpeta lib? Bueno, al final, funcionaría de la misma manera que tendrías básicamente, cuando tienes esa funcionalidad específica dentro de la carpeta de la aplicación misma. La única distinción, como cuando mueves algo a la carpeta lib es que de alguna manera expones o encapsulas más la lógica que deseas exponer a la propia aplicación. Así que es más bien un patrón de composición. No es que la librería de alguna manera esté precompilada y solo consumes las fuentes compiladas, sino que en realidad la aplicación es una construcción de Webpack y simplemente consume desde esa posición, desde esa ubicación en la carpeta libs. Entonces, al final, no cambia realmente cuando lo tienes dentro de una carpeta de tu aplicación, pero dentro de la carpeta de tu librería, siempre está consumiendo eso desde la fuente.

Gestión de Etiquetas, Alcance y Dependencias

Short description:

Existen diferentes enfoques para gestionar etiquetas, alcance y dependencias en proyectos grandes. Distinguir entre alcances y tipos ayuda a establecer restricciones entre las aplicaciones. Los alcances pueden definirse a un nivel granular o más alto, dependiendo de la arquitectura. Algunos utilizan un enfoque impulsado por dominios, con librerías que representan dominios bien definidos y librerías dedicadas que sirven como APIs públicas. Es mejor comenzar a utilizar etiquetas desde el principio y extenderlas gradualmente. El proceso de implementación y el pipeline de CI en NX implican construir las partes modificadas e identificar las librerías. El proceso de implementación es similar, con la aplicación construida empaquetada e implementada como de costumbre.

Muy bien. La siguiente pregunta es de Ryan Burr, ¿hay una buena manera de gestionar todas tus etiquetas, alcance y dependencias en proyectos grandes? ¿Cómo lo haces? Sí, depende. Hay diferentes enfoques para gestionar eso. Por lo general, como mencioné y mostré en la charla, distinguimos entre alcances y tipos, ¿verdad? Con eso, también puedes tener una idea y restricciones entre tus aplicaciones. Pero también puedes ir más profundo, ¿verdad? Los alcances pueden definirse, son cadenas arbitrarias al final. Por lo que realmente puedes adaptarlos a un nivel granular o mantenerlos más generales, a un nivel más alto. El enfoque realmente depende de tu configuración de arquitectura. Hay muchas personas, por ejemplo, que utilizan un enfoque más orientado a dominios, donde cada librería, instrucción, subcarpetas, básicamente abarcan un dominio bien definido de todo tu espacio de trabajo. Y luego tienes librerías dedicadas, que son como la API pública para ese dominio, que luego tienen facetas, o algo que entra o básicamente expone la funcionalidad de ese dominio a otros dominios. Por lo que realmente puedes ir a un nivel de detalle muy alto. Por lo general, animo a las personas a utilizar etiquetas desde el principio. Y agregarlas más tarde es realmente difícil, porque tienes que hacer muchas correcciones, por supuesto. Pero luego comienza de forma sencilla, y simplemente extiende las etiquetas a medida que avanzas.

Sí. Muy bien. Creo que esta es la última pregunta a la que tenemos tiempo para responder, y es de Imagine Wagons, buen nombre. ¿Cuál es el flujo de implementación y el pipeline de CI? Entonces, sí, la implementación, comencemos desde el pipeline de CI, tal vez el pipeline de CI simplemente construye lo que haya cambiado. Y eso es una de las partes más poderosas de NX, obviamente a medida que tu repositorio crece, los tiempos de construcción aumentarían y los tiempos de prueba aumentarían. Y así, NX tiene el comando 'affected'. Por lo que básicamente puedes enviar tu pull request o solicitud de fusión. Y en función del comentario que envíes allí, comparará qué cambios se han realizado con la rama base, que puede ser main o master, como desees usarlo. Y luego calcula qué ha cambiado, identifica las librerías y luego simplemente ejecuta las tareas, construye y limpia esas librerías. Y luego el pipeline de implementación es realmente muy similar. Entonces, si construiste la aplicación en esa ejecución específica de CI, simplemente obtienes un paquete distribuido, como un paquete compilado en esta carpeta, y desde allí lo recoges y luego lo implementas como lo harías normalmente. Por lo que no es necesario hacer ningún cambio allí.

Muy bien, Command Center, ¿tenemos tiempo para una pregunta más? Ah, lo siento, Yuri, tengo que interrumpirte. Lo siento. Yuri, muchas gracias por compartir esto con nosotros. Si alguien que está viendo aún quiere hacerle preguntas a Yuri, sé que hay muchas preguntas en Discord a las que no tuvimos la oportunidad de responder. Yuri estará en su sala de chat especial para los oradores. Así que asegúrate de ir allí si quieres unirte a la conversación, continuar la conversación con Yuri. Yuri, una vez más, muchas gracias y espero verte de nuevo pronto. Sí, gracias. Gracias por tenerme. Adiós. Adiós.

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

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.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.

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.