Qué Sucede Cuando Construyes Tu Aplicación

Rate this content
Bookmark
Slides

¿Cómo inicias tu aplicación en el simulador por la mañana? ¿Siempre ejecutas react-native run-ios? Si es así, podrías estar perdiendo mucho tiempo. Vamos a ver juntos cómo se ve una aplicación de React Native por debajo del capó. Esto nos ayudará a ser más eficientes en nuestro día a día. Identificaremos los pasos más cortos para ejecutar acciones diarias, como iniciar nuestras aplicaciones lo más rápido posible (¡sin compilaciones innecesarias de módulos nativos!) o lidiar con los molestos errores rojos que nos arroja Metro.

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

FAQ

React Native es un framework para el desarrollo de aplicaciones móviles que, a diferencia de usar elementos HTML como divs y spans, utiliza componentes principales como botones y texto. Estos componentes le solicitan al sistema operativo nativo (Android o iOS) que cree los componentes nativos correspondientes.

Metro es un empaquetador de JavaScript para móviles, equivalente a Webpack para web, que compila el código JavaScript en un único archivo llamado 'bundle'. Este bundle es utilizado por React Native para ejecutar la aplicación, y Metro puede actualizarlo al vuelo si se realizan cambios en el código.

La comunicación entre JavaScript y el código nativo en React Native se maneja a través de un puente, donde ambos intercambian mensajes JSON para realizar acciones como cambiar el título de un botón. Esta arquitectura está sujetas a evoluciones futuras con nuevas implementaciones.

React Native Run iOS es un comando que inicia un servidor Metro y abre simuladores para manejar el código nativo. Compila el código nativo generando una aplicación ejecutable (IPA) que se instala y lanza en un simulador. Paralelamente, el motor JavaScript solicita y ejecuta el bundle desde Metro.

Para optimizar el lanzamiento diario, en lugar de ejecutar React Native Run iOS cada día, puedes simplemente iniciar un servidor Metro con 'react native start', lanzar tu simulador y abrir la aplicación ya instalada. Este proceso es más rápido a menos que se hayan añadido nuevas bibliotecas nativas.

Si falta una biblioteca JavaScript, se soluciona ejecutando 'yarn install'. Si el error involucra componentes nativos, como la falta de un elemento en el administrador de interfaz de usuario, se requiere ejecutar 'pod install' para la parte nativa y luego reconstruir la aplicación con 'react native run iOS'.

Charlotte Isambert
Charlotte Isambert
20 min
24 Oct, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La charla de hoy profundiza en el desarrollo de React Native, explorando el proceso de desarrollo, la comunicación entre JavaScript y nativo, y la implementación de aplicaciones. Destaca el proceso de construcción de aplicaciones, el comando React Native Run iOS y los gestos de desarrollo para una ejecución eficiente. La charla también enfatiza el proceso recomendado para iniciar y probar tu aplicación, así como manejar el error de la 'pantalla roja de la muerte' instalando bibliotecas faltantes y comprendiendo el papel del administrador de interfaz de usuario en la creación de vistas nativas.

1. Introducción al desarrollo de React Native

Short description:

Hola a todos, soy Charlotte, una líder técnica de React Native en BAM. Hoy profundizaremos en tu aplicación, entenderemos qué sucede cuando la construyes y aprenderemos a ser más eficientes. Permíteme compartir una historia. Un día, me encontré con un gran error y no sabía cómo resolverlo. Solía ​​eliminar todo y comenzar desde cero, perdiendo tiempo. Mi colega me aconsejó entender qué está sucediendo dentro de la caja negra. Eso es lo que haremos hoy. Un recordatorio rápido: React Native utiliza componentes principales en lugar de elementos HTML. ¡Comencemos!

tu aplicación. Estudiaremos el interior de tu aplicación y qué sucede cuando la construyes. Y luego veremos cómo podemos utilizar esta información para ser más eficientes en nuestro día a día. Pero déjenme contarles una breve historia antes.

Un día estaba trabajando en mi escritorio y apareció un gran error rojo en mi pantalla. El tipo de error que no entendía y no sabía cómo resolver. Ese día hice lo que solía hacer en ese entonces para solucionarlo. Eliminé todo. Mi aplicación, mi simulador, tal vez incluso mi servidor de metro. Y después de ese segundo paso, volví a lanzarlo todo desde cero, completamente nuevo. Ejecuté Yang install, Pod install. Reconstruí toda mi aplicación. No entendía lo que estaba sucediendo dentro de mi simulador. Así que no pude identificar qué pieza del rompecabezas estaba fallando. Así que comencé todo de nuevo. Y funcionó. Pero estaba perdiendo mucho tiempo. Y ese día, una de mis colegas pasó y me vio eliminando todo sin ninguna compasión. Y me aconsejó tratar de entender qué estaba sucediendo dentro de esta caja negra. Así que eso es lo que hice. Y eso es lo que vamos a hacer hoy.

Un recordatorio rápido antes de comenzar. Para aquellos de ustedes que trabajan en la web, lo que deben saber sobre React Native es que en lugar de usar elementos HTML como divs y spans, vamos a usar componentes principales de React Native, como botones y texto. Y a partir de esos componentes, React Native va a pedirle al nativo que cree los componentes nativos asociados de Android e iOS. De acuerdo. Comencemos. Esta es una vista de una aplicación de React Native en nuestro entorno de desarrollo. Hay dos partes en este esquema, una parte de JavaScript y una parte nativa. En el lado de JavaScript, tenemos algo de código.

2. Proceso de desarrollo de React Native

Short description:

Tenemos código JS, JSX y TypeScript, que se transferirá a JavaScript mediante Babel. Mitro, el empaquetador de JavaScript, empaquetará el JavaScript en un solo archivo llamado bundle. En el lado nativo, tenemos Swift y Objective-C en iOS, y Java y Kotlin en Android. El código nativo debe compilarse, lo que producirá un archivo ejecutable IPA en iOS y APK en Android. Una aplicación de React Native es una aplicación nativa que instancia un motor de JavaScript para compilar y ejecutar el bundle de JavaScript, permitiendo la comunicación entre el mundo JavaScript y el mundo nativo.

Tenemos código JS, JSX, pero también código TypeScript. Este código se transferirá a JavaScript mediante Babel. El JSX se transferirá a JS y el JS se transferirá a un JS más antiguo sin ninguna de las nuevas características que las máquinas antiguas no pueden entender. Luego tenemos Mitro. Mitro es un empaquetador de JavaScript, el equivalente móvil de Webpack. Empaquetará el JavaScript en un solo archivo que se llama bundle. Y React Native solo trabajará con este archivo único. Si realizas cambios en tu código JavaScript, Mitro agregará esos cambios al bundle y actualizará tu aplicación al vuelo. Eso es todo para el JS.

Ahora, echemos un vistazo a la parte nativa. En el lado nativo, tenemos código nativo, ya sea Swift y Objective-C en iOS, y Java y Kotlin en Android. Si abres tu aplicación en tu IDE, verás una carpeta de Android y una de iOS. Y en este directorio de iOS, tienes todo lo que necesitas para crear una aplicación de iOS. Si estás construyendo una en Swift, de hecho, estarías trabajando dentro de este directorio.

Ahora, este código nativo debe compilarse, y este proceso de compilación va a producir una aplicación ejecutable, IPA en iOS, APK en Android. Estas son aplicaciones nativas que podremos instalar en nuestro teléfono. Estas dos aplicaciones, el bundle y el IPA, nos permitirán construir nuestra aplicación de React Native. Echemos un vistazo más de cerca a ellas. Esta es la parte interna de una aplicación de React Native. En realidad, se construye a partir del IPA que se ejecutó. Una aplicación de React Native es realmente solo una aplicación nativa que instanciará un motor de JavaScript que compilará y ejecutará el bundle de JavaScript. El mundo JavaScript podrá comunicarse con el mundo nativo. Esto funciona así. Imagina que tenemos este componente simple que renderiza un botón con un título especial. Primero, el JavaScript renderizará su botón en la pantalla. Para hacer esto, dará instrucciones al nativo para que renderice el componente nativo equivalente. Entonces dice: `Por favor, nativo, ¿podrías renderizar este botón para mí?` Y el nativo responde: `Por supuesto. Aquí lo tienes. El usuario acaba de presionarlo. Tal vez deberías activar esta devolución de llamada cuando se presione.`

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.
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.
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
TypeScript Congress 2023TypeScript Congress 2023
31 min
Haciendo Magia: Construyendo un Marco de Trabajo Primero-TypeScript
Top Content
Daniel Rowe discusses building a TypeScript-first framework at TypeScript Congress and shares his involvement in various projects. Nuxt is a progressive framework built on Vue.js, aiming to reduce friction and distraction for developers. It leverages TypeScript for inference and aims to be the source of truth for projects. Nuxt provides type safety and extensibility through integration with TypeScript. Migrating to TypeScript offers long-term maintenance benefits and can uncover hidden bugs. Nuxt focuses on improving existing tools and finds inspiration in frameworks like TRPC.
Inside Fiber: la visión en profundidad que querías un TLDR para
React Summit 2022React Summit 2022
27 min
Inside Fiber: la visión en profundidad que querías un TLDR para
Top Content
This Talk explores the internals of React Fiber and its implications. It covers topics such as fibres and units of work, inspecting elements and parent matching, pattern matching and coroutines, and the influence of coroutines on concurrent React. The Talk also discusses effect handlers in React, handling side effects in components, and the history of effect handlers in React. It concludes by emphasizing the importance of understanding React internals and provides learning resources for further exploration.
Elevando el Listón: Nuestro Viaje Haciendo de React Native una Opción Preferida
React Advanced 2023React Advanced 2023
29 min
Elevando el Listón: Nuestro Viaje Haciendo de React Native una Opción Preferida
This Talk discusses Rack Native at Microsoft and the efforts to improve code integration, developer experience, and leadership goals. The goal is to extend Rack Native to any app, utilize web code, and increase developer velocity. Implementing web APIs for React Native is being explored, as well as collaboration with Meta. The ultimate aim is to make web code into universal code and enable developers to write code once and have it work on all platforms.
Profundizando en Concurrent React
React Advanced 2022React Advanced 2022
29 min
Profundizando en Concurrent React
The Talk discussed Concurrent React and its impact on app performance, particularly in relation to long tasks on the main thread. It explored parallelism with workers and the challenges of WebAssembly for UI tasks. The concepts of concurrency, scheduling, and rendering were covered, along with techniques for optimizing performance and tackling wasted renders. The Talk also highlighted the benefits of hydration improvements and the new profiler in Concurrent React, and mentioned future enhancements such as React fetch and native scheduling primitives. The importance of understanding React internals and correlating performance metrics with business metrics was emphasized.

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 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.
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
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
WorkshopFree
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
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Introducción - Cleo & nuestra misión- Lo que queremos construir, cómo encaja en nuestro producto & propósito, revisar los diseños- Comenzando con la configuración del entorno & “hola mundo”- Introducción a la animación de React Native- Paso 1: Hacer girar la rueda al presionar un botón- Paso 2: Arrastrar la rueda para darle velocidad- Paso 3: Agregar fricción a la rueda para frenarla- Paso 4 (extra): Agregar hápticos para una sensación inmersiva