React a gran escala con Nx

Rate this content
Bookmark

Cuanto más grande se vuelve una base de código, más difícil se vuelve mantenerla. Todos los procesos informales de un equipo pequeño deben ser sistematizados y respaldados con herramientas a medida que el equipo crece. Ven y aprende cómo Nx permite a los desarrolladores centrarse más en el código de la aplicación y menos en las herramientas.


Construiremos un monorepo desde cero, creando una aplicación cliente y una aplicación de servidor que comparten una biblioteca de tipos de API. Aprenderemos cómo Nx utiliza ejecutores y generadores para hacer que la experiencia del desarrollador sea más consistente en todos los proyectos. Luego crearemos nuestros propios ejecutores y generadores para procesos que son únicos en nuestra organización. También exploraremos el creciente ecosistema de complementos que permiten la integración fluida de frameworks y bibliotecas.

This workshop has been presented at React Summit 2022, check out the latest edition of this React Conference.

FAQ

Un monorepo es un repositorio, generalmente un repositorio Git, donde se alojan múltiples aplicaciones en el mismo repositorio. Los beneficios de utilizar un monorepo incluyen cambios atómicos, facilidad para compartir código y un conjunto único de dependencias, lo que facilita la gestión y el mantenimiento del código.

NX es una herramienta que ayuda a manejar y escalar monorepos de manera eficiente. Ofrece ejecución de comandos más rápida, compartición de código controlada, prácticas de codificación consistentes y un diagrama de arquitectura preciso, lo que facilita la gestión de dependencias y optimiza los procesos de desarrollo.

El estilo de monorepo de Google se caracteriza por tener muchas herramientas y un conjunto único de dependencias centralizadas en un archivo package JSON en la raíz, mientras que el estilo de aprendiz tiene múltiples package JSON con diferentes dependencias para cada aplicación en el repositorio, siendo un estilo más ligero y con menos herramientas.

Los cambios atómicos en un monorepo permiten que cualquier modificación en el código sea probada y validada con todas las aplicaciones y bibliotecas del repositorio antes de ser confirmada, lo que reduce el riesgo de errores y mejora la coherencia del sistema.

NX Cloud ofrece almacenamiento en caché distribuido, lo que permite compartir resultados de compilaciones entre todos los miembros del equipo. Esto acelera significativamente los tiempos de compilación y pruebas al evitar la repetición de tareas ya ejecutadas, y proporciona un nivel gratuito con opciones de pago para empresas más grandes.

NX proporciona herramientas como generadores de migración que actualizan automáticamente configuraciones y dependencias cuando se actualizan las versiones de las herramientas o frameworks utilizados. Esto simplifica el proceso de mantener el código actualizado y reduce el riesgo de incompatibilidades entre diferentes partes del monorepo.

Isaac Mann
Isaac Mann
Zack DeRose
Zack DeRose
160 min
01 Jul, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Bienvenido a React a gran escala con NX. NX ofrece beneficios como una ejecución de comandos más rápida, compartición de código controlada, prácticas de codificación consistentes y un diagrama de arquitectura preciso. El masterclass cubre varios temas, incluyendo la configuración del espacio de trabajo, la creación de bibliotecas, la división de código, la integración de API y las pruebas con Storybook y Cypress. NX ofrece funcionalidades como el almacenamiento en caché, la consola de Nx y la nube de Nx, y proporciona un gráfico de dependencias para visualizar las dependencias del proyecto. También se discuten consejos de solución de problemas y la creación de generadores de espacio de trabajo.
Available in English: React at Scale with Nx

1. Introducción a React a gran escala con NX

Short description:

Bienvenidos a React a gran escala con NX. En este masterclass, te presentaremos NX y los beneficios de usar un monorepo. Un monorepo es un repositorio que contiene múltiples aplicaciones, lo que permite cambios atómicos, compartir código fácilmente y un conjunto único de dependencias. Los cambios atómicos te permiten realizar un cambio y ver sus efectos en toda la aplicación de inmediato. Compartir código se vuelve más fácil ya que puedes exportar e importar funciones dentro del monorepo. Tener un conjunto único de dependencias garantiza que todas las aplicaciones se mantengan actualizadas y reduce el retraso en el proceso de desarrollo.

Muy bien, todos. Bienvenidos a React a gran escala con NX. Sí, ¡vamos! Mi nombre es Isaac Mann. Soy arquitecto en Narwhal. He estado aquí durante tres años y medio. Y, Zach, ¿quieres presentarte?

Claro, mientras encuentro el botón de silencio. Soy Zach Derose. Llevo casi cuatro años en Narwhal. Soy ingeniero senior y gerente de ingeniería, al igual que Isaac, y estoy emocionado de compartir este conocimiento de NX con todos ustedes. Así que, sí. Sí. Zach y yo nos unimos con una diferencia de dos semanas. Así que puedes ver cómo Zach es el optimista. Así que lleva casi cuatro años. Y yo digo, bueno, más de tres años. Así que, vaso medio lleno, vaso medio vacío. Sí, supongo. Lo siento, no escuché tu presentación porque estaba escribiendo en el chat. Pero, sí. Eso es gracioso.

Sí, hoy te daremos una introducción a NX a través de un masterclass que normalmente tenemos configurado para un masterclass de dos días. Vamos a cubrir el primer día en tres horas. Normalmente toma alrededor de seis horas, pero vamos a intentar cubrirlo lo mejor que podamos en tres horas. Básicamente, eso significa que reduciremos el tiempo que te daremos para hacer las cosas por tu cuenta. Voy a guiarlos a través de los laboratorios y te daré tiempo para hacer preguntas. Pero no vamos a hacer pausas de 10 minutos en cada laboratorio para que hagas todo por tu cuenta. Pero el repositorio está enlazado en el chat. Así que si sientes que voy demasiado rápido, está ahí y puedes hacerlo a tu propio ritmo más tarde. Algunas notas solo para, supongo, notas de procedimiento. Queremos asegurarnos de que este sea un entorno amigable donde todos se sientan bienvenidos e incluidos. Esto incluye cualquier elección de vida que las personas hagan y cualquier elección técnica que las personas hagan. Así que no avergonzar a las personas por lo que elijan hacer con su vida y no avergonzar a las personas por las tecnologías que utilizan en el trabajo. Así es. Y no avergonzaremos a las personas por usar IE, aunque se esté eliminando gradualmente, creo, esta semana, ¿mañana? No sé. Hay una gran celebración sucediendo. Sí, hoy. Muy bien. ¿Algo más que me esté perdiendo, Zach, antes de comenzar?

No, solo un recordatorio, sin embargo, para cualquier persona nueva, lo he estado diciendo mucho, pero estaré en el chat. Así que usemos el chat de Zoom si tienen alguna pregunta mientras avanzamos. Responderé lo que pueda. Y si es apropiado, interrumpiremos a Isaac para repasar algunas cosas mientras comparte su pantalla. Así que sí, genial. Muy bien. Voy a compartir mi pantalla y compartir mi pantalla completa aquí. Y vamos a pasar por algunas diapositivas. Muy bien, esto es React a gran escala con NX Monorepos. Y una cosa con la que deberíamos comenzar es definir qué es un monorepo y por qué querrías usar un monorepo. Un monorepo es un repositorio, generalmente un repositorio Git, donde tienes múltiples aplicaciones en el mismo repositorio. Y el beneficio de codificar de esa manera es que obtienes cambios atómicos, compartes código más fácilmente y puedes obtener un conjunto único de dependencias. Permíteme retroceder un poco. Hay dos tipos de monorepos en los que puedes meterte. Está el estilo de monorepo de Google, por falta de una mejor palabra, donde hay muchas tooling y muchas cosas para ayudarte a compartir código mejor. Y luego está el estilo de aprendiz o muy ligero, menos tooling. Y hablaremos de eso un poco más adelante con el, creo que lo llamamos co-ubicación de código a veces. Pero NX puede ayudar con ambos. Pero durante este masterclass, vamos a hablar del estilo de Google, que tiene un conjunto único de dependencias, un archivo package JSON en la raíz. Mientras que el estilo de aprendiz es que tienes muchos package JSON con diferentes dependencias para cada aplicación en tu repositorio. Así que nos vamos a enfocar en ese estilo de Google para este masterclass. Pero al final, podríamos hacer una demostración de cómo se vería NX en el estilo de aprendiz de monorepo. Tenemos estas tres cosas que un monorepo te brinda, cambios atómicos, código compartido y un conjunto único de dependencias. Ahora veamos qué significa cada una de estas cosas. Los cambios atómicos son, digamos que tienes una aplicación y una biblioteca en tu repositorio. En realidad, en este caso, las tenemos en dos repositorios separados. Entonces tienes la aplicación en una biblioteca de UI. Si los tienes en dos repositorios separados, entonces digamos que haces un cambio en tu biblioteca y rompe algún comportamiento en tu aplicación. Entonces el autor de la biblioteca hace un cambio, lo publica. El desarrollador de la aplicación en algún momento posterior actualiza a la última versión de la biblioteca. Y se dan cuenta, oye, esto está roto. No podemos usar esta próxima versión de la biblioteca. Así que le dicen al desarrollador de la biblioteca, OK, presentan un error. Necesitas arreglar esto. Y luego, más tarde, el desarrollador de la biblioteca vuelve y dice, OK, tengo que arreglar eso. Hace el cambio. Publica una nueva versión. Y luego, más tarde, el desarrollador de la aplicación actualiza a la próxima versión de la biblioteca y dice, OK, finalmente está arreglado. Así que ese es el largo tiempo de ciclo si los tienes en dos repositorios separados. Si estuvieran en un solo repositorio, entonces el desarrollador de la biblioteca, cuando hace el cambio, podría ejecutar las pruebas para toda la aplicación, todo el repositorio, y decir, oh, espera, este cambio que estoy a punto de hacer, rompe esta otra aplicación, así que lo voy a arreglar ahora mismo. Así que tienes un tiempo de ciclo de 45 minutos en lugar de una semana. Ese es el beneficio de un cambio atómico. Haces un cambio y puedes ver los efectos de inmediato en toda la aplicación incluso antes de hacer un commit. El segundo punto es que es más fácil compartir código. Digamos que tienes una función llamada username is valid, y esta lógica se utiliza en muchas aplicaciones diferentes, si tienes un monorepo, compartir ese código es tan fácil como exportar una función e importarla en otro lugar. Y cada vez que cambias esa lógica, se aplica de inmediato en todo tu repositorio. Mientras que si tienes repositorios separados, tienes que versionar las cosas y republicarlas, y tienes todo ese tiempo de ciclo, ese retraso en tu proceso de desarrollo, como dije con los commits atómicos. El tercer beneficio es tener un conjunto único de dependencias. A menudo, si tienes múltiples aplicaciones, siempre habrá algunas aplicaciones en las que estás desarrollando todo el tiempo que estarán en las últimas versiones de las cosas. Y habrá algunas aplicaciones que solo tocas ocasionalmente y siempre se quedan atrás. Y actualizarlas y avanzar es un dolor porque inevitablemente, se quedan seis versiones atrás y tienes que recordar todos los problemas que tuviste que resolver durante el último año cuando estabas actualizando cosas, tienes que volver y revivirlos todos una y otra vez mientras actualizas esta aplicación antigua. Mientras que si mantienes todo en la misma versión, solo haces ese cambio una vez y lo haces en toda tu aplicación.

2. Beneficios de NX

Short description:

NX ayuda con una ejecución de comandos más rápida, compartir código controlado, prácticas de codificación consistentes y un diagrama de arquitectura preciso. Elimina los problemas con la co-ubicación de código y proporciona beneficios como una ejecución de comandos más rápida, compartir código controlado, prácticas de codificación consistentes y un diagrama de arquitectura preciso. NX permite una ejecución de comandos más rápida, compartir código controlado, prácticas de codificación consistentes y un diagrama de arquitectura preciso. Aborda las desventajas de la co-ubicación de código y proporciona beneficios como una ejecución de comandos más rápida, compartir código controlado, prácticas de codificación consistentes y un diagrama de arquitectura preciso.

Dices, bien, cada vez que veo este patrón de código, hago esta corrección y lo haces una vez y ya está. En lugar de tener que hacerlo ahora y luego dentro de dos meses y luego dentro de seis meses para todas las diferentes aplicaciones que estás viendo. La otra cosa que ayuda un conjunto único de dependencias es si estás haciendo un enfoque de micro-fundición, debes tener las cosas en la misma versión, de lo contrario, obtendrás errores extraños con una biblioteca de React 16 que intenta inyectarse en una aplicación de React 17 y las cosas están confundidas acerca de qué es un singleton de una determinada instancia o lo que sea. Entonces, tener un conjunto único de dependencias simplemente elimina toda esa clase de problemas.

Bien, la co-ubicación de código es lo que harías si simplemente colocaras múltiples aplicaciones en el mismo repositorio sin ninguna herramienta alrededor. Simplemente lo colocas y dices, será mejor, podremos compartir nuestro código y será agradable. Pero aquí están los problemas con eso. El tiempo que lleva ejecutar las pruebas crecerá exponencialmente. Tienes problemas para tener límites de código y mantener las cosas contenidas y no tener código espagueti. Y luego tendrás herramientas inconsistentes cuando intentes administrar tu base de código. Por lo tanto, se ejecutan pruebas innecesarias.

Entonces, digamos que tienes una página de inicio que depende de una biblioteca de UI. Si cambiaras la página de inicio, solo necesitarías ejecutar la prueba para la página de inicio. No necesitas ejecutar la prueba para la biblioteca de UI porque no hay forma de que un cambio en la página de inicio pueda romper la biblioteca de UI porque así funciona la dependencia. Pero si no tienes las herramientas que entienden eso, no sabrás qué pruebas debes ejecutar. Entonces, terminas ejecutando las pruebas de todo cada vez que haces algún cambio. Y eso hace que el tiempo que lleva tu CI crezca exponencialmente con la cantidad de cosas que agregas porque cada aplicación que agregas agrega más pruebas que debes ejecutar sin importar dónde se realice ese cambio. Incluso si estás haciendo cambios en una aplicación que no tiene dependencia de la otra, debes ejecutar la prueba de todo solo para asegurarte de no haber roto algo por accidente.

Y obviamente, este es un ejemplo muy pequeño. Puedes darte cuenta solo con mirarlo si necesitas ejecutar pruebas para algo o no. Pero tu gráfico de dependencias se verá más o menos así, este es incluso un repositorio muy pequeño. En cualquier empresa de tamaño moderado, tendrás cientos de nodos en este gráfico una vez que comiences a trabajar en cosas. En ese punto, no puedes saber como persona solo entendiendo el código qué pruebas realmente necesitan ejecutarse, debes tener algunas herramientas que lo hagan por ti. Entonces, debes saber que cuando cambias la biblioteca de la página del carrito, debes saber que la herramienta puede decirte que debes probar la aplicación del carrito y luego la aplicación de extremo a extremo del carrito porque son las cosas que dependen de ella. Muy bien. Quieres tener límites de código. Entonces, digamos que tienes algo en tu biblioteca que solo quieres usar internamente en esa biblioteca o sabes que va a cambiar y no quieres que otras personas en otras partes del código lo usen. Entonces, podrías hacer cosas como, sé que React hace esto a veces, tienen inestable o prefijan los nombres de las cosas con mensajes de advertencia para las personas para decir, oye, no uses esto en realidad, es tu culpa si usas esto, esto va a cambiar, va a romper tu código. Y solo para evitar que las personas dependan de cosas que no están destinadas al consumo público. Mientras que si tienes herramientas que te impiden hacer estas importaciones profundas, puedes detener este problema antes de que ocurra.

Muy bien, la otra cosa es la herramienta inconsistente. Si tienes muchas aplicaciones en tu repositorio, obtienes los scripts de NPM que se inflan. Y el formato de esos scripts de NPM se basa en el capricho del desarrollador en el momento en que lo escribió. Porque siempre van a tener alguna bandera aleatoria que nadie conoce o espera. Y ni siquiera sabes cómo hacer cosas diferentes. Entonces, una aplicación podría ser build, una aplicación podría ser dev, una aplicación podría ser launch. Y todas hacen lo mismo, pero si estás cambiando de una aplicación a otra, no tienes forma de saber cómo comenzar en ella. No hay consistencia en esos scripts.

Muy bien, NX puede ayudarte a obtener los beneficios del estilo de codificación de Monorepo sin las desventajas de la co-ubicación de código. Ayuda al brindarte una ejecución de comandos más rápida, compartir código controlado, prácticas de codificación consistentes y un diagrama de arquitectura preciso. Cosas que ayudan con una ejecución de comandos más rápida, si usas Executors, que son básicamente como scripts de NPM, pero en scripts de NPM más estructurados básicamente. Entonces, hay herramientas a su alrededor que te ayudan a obtener autocompletado y obtener algo gráfico. Entonces, hay una consola de NX que te permite completar visualmente todas las opciones disponibles. La segunda cosa es que NX afectado te ayuda a ejecutar las pruebas en las cosas que realmente se ven afectadas por una PR. Por lo tanto, puedes ejecutar pruebas o compilaciones o cualquier comando solo en el código que se ve afectado por tu cambio. Eso acelera tu CI y tu desarrollo local y obtienes almacenamiento en caché local y distribuido. Entonces, si ejecutas un comando por segunda vez en el mismo código sin cambiar el código, será casi instantáneo. Se obtendrá de la caché en lugar de ejecutar el comando nuevamente. Y luego puedes usar el almacenamiento en caché distribuido, que te permite compartir esa caché en toda tu organización. Entonces, eso es NX Cloud y es un producto de pago. Aunque hay un gran nivel gratuito para NX Cloud. Entonces, la mayoría de las aplicaciones son gratuitas. Es así cuando llega a empresas gigantes, tienes que pagar algo. Muy bien. Obtienes compartir código controlado con NX. Puedes tener una API definida para tu biblioteca y decir, oye, si alguien va a usar esta biblioteca, estas son las cosas que se te permite usar. Si intentas acceder a algo que no exporté explícitamente en esta definición de la API, lanzará un error y tu código no se compilará. Puedes configurar etiquetas para decir qué bibliotecas y aplicaciones pueden depender entre sí y decir, estas pertenecen a este equipo y este conjunto completo de proyectos pertenece a este equipo y no pueden interactuar entre sí. Solo pueden depender de cosas compartidas. Puedes publicar fácilmente bibliotecas en NPM y puedes usar algo como el archivo de propietarios de código en GitHub, que requiere una aprobación de un conjunto específico de personas para cambios en un proyecto en particular, una sección en tu repositorio.

NX también te permite tener prácticas de codificación consistentes. Hay reglas de linting que te ayudan a determinar qué cosas dependen de qué otras cosas y hacer cumplir esas API y bibliotecas definidas. Los generadores son básicamente scripts que te permiten crear o modificar código. Hay un tipo especial de generadores llamados generadores de migración que actualizan tu código cuando actualizas versiones. Si pasas de React 16 a 17, hay un generador de migración que actualiza tus archivos de configuración para asegurarte de que tu código se mantenga actualizado junto con la actualización de tu marco de trabajo. Entonces, NARL tiene un conjunto de complementos que admiten diferentes marcos y herramientas, como Angular, React, Express, Nest, Next, Cypress, Storybook, cosas así. Y luego también hay complementos de la comunidad, por lo que NARL no tiene soporte incorporado para ellos. Hay una comunidad donde las personas escriben sus propios complementos para cosas como Vue y otras cosas, y puedes usar esos complementos de la comunidad para ayudar a hacer cumplir esas prácticas de codificación consistentes.

Muy bien, otra cosa que NX te brinda es un diagrama de arquitectura preciso. Entonces, si ejecutas NX graph en un repositorio que tiene NX instalado, puedes ver cuál es la estructura de código real de tu repositorio, no lo que deseas que sea o no lo que era hace seis meses, que es generalmente lo que es nuestro diagrama de arquitectura. Es lo que el código realmente es en este momento y cómo las diferentes partes de tu código realmente dependen entre sí. Y esto es realmente útil. Esta es una de las, no sé. Una de mis características favoritas de NX es este gráfico de dependencias.

Muy bien, así es como NX estructura tu repositorio de forma predeterminada. Entonces, si vas a la configuración ligera de NX, puedes estructurarlo como desees. Esto es solo lo predeterminado. Si te vas con todo en NX y dices, oye, NX, estructura mi repositorio por mí, esto es lo que NX hará. Pero si quieres usar NX en un repositorio con una estructura diferente, puedo mostrarte cómo hacerlo al final. Muy bien, NX tiene una carpeta de aplicaciones y una carpeta de bibliotecas de forma predeterminada.

QnA

Watch more workshops on 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 WorkshopFree
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 🤐)
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.
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
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.
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
React Summit 2023React Summit 2023
151 min
Diseñando Pruebas Efectivas con la Biblioteca de Pruebas de React
Top Content
Featured Workshop
Josh Justice
Josh Justice
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
Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
React a Escala con Nx
React Summit 2023React Summit 2023
145 min
React a Escala con Nx
Top Content
Featured WorkshopFree
Isaac Mann
Isaac Mann
Vamos a utilizar Nx y algunos de sus plugins para acelerar el desarrollo de esta aplicación.
Algunas de las cosas que aprenderás:- Generar un espacio de trabajo Nx prístino- Generar aplicaciones frontend React y APIs backend dentro de tu espacio de trabajo, con proxies preconfigurados- Crear librerías compartidas para reutilizar código- Generar nuevos componentes enrutados con todas las rutas preconfiguradas por Nx y listas para usar- Cómo organizar el código en un monorepositorio- Mover fácilmente las librerías alrededor de tu estructura de carpetas- Crear historias de Storybook y pruebas e2e de Cypress para tus componentes
Tabla de contenidos: - Lab 1 - Generar un espacio de trabajo vacío- Lab 2 - Generar una aplicación React- Lab 3 - Ejecutores- Lab 3.1 - Migraciones- Lab 4 - Generar una librería de componentes- Lab 5 - Generar una librería de utilidades- Lab 6 - Generar una librería de rutas- Lab 7 - Añadir una API de Express- Lab 8 - Mostrar un juego completo en el componente de detalle de juego enrutado- Lab 9 - Generar una librería de tipos que la API y el frontend pueden compartir- Lab 10 - Generar historias de Storybook para el componente de interfaz de usuario compartido- Lab 11 - Prueba E2E del componente compartido

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

No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
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.
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
React Advanced 2021React Advanced 2021
47 min
Sistemas de Diseño: Caminando la Línea Entre Flexibilidad y Consistencia
Top Content
The Talk discusses the balance between flexibility and consistency in design systems. It explores the API design of the ActionList component and the customization options it offers. The use of component-based APIs and composability is emphasized for flexibility and customization. The Talk also touches on the ActionMenu component and the concept of building for people. The Q&A session covers topics such as component inclusion in design systems, API complexity, and the decision between creating a custom design system or using a component library.
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.
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
React Day Berlin 2023React Day Berlin 2023
16 min
Gestión del Estado de React: 10 Años de Lecciones Aprendidas
Top Content
This Talk focuses on effective React state management and lessons learned over the past 10 years. Key points include separating related state, utilizing UseReducer for protecting state and updating multiple pieces of state simultaneously, avoiding unnecessary state syncing with useEffect, using abstractions like React Query or SWR for fetching data, simplifying state management with custom hooks, and leveraging refs and third-party libraries for managing state. Additional resources and services are also provided for further learning and support.
Elevando Monorepos con los Espacios de Trabajo de npm
DevOps.js Conf 2022DevOps.js Conf 2022
33 min
Elevando Monorepos con los Espacios de Trabajo de npm
Top Content
NPM workspaces help manage multiple nested packages within a single top-level package, improving since the release of NPM CLI 7.0. You can easily add dependencies to workspaces and handle duplications. Running scripts and orchestration in a monorepo is made easier with NPM workspaces. The npm pkg command is useful for setting and retrieving keys and values from package.json files. NPM workspaces offer benefits compared to Lerna and future plans include better workspace linking and adding missing features.