Herramientas para reactivar el desarrollo nativo

Las herramientas, las bibliotecas y los servicios son una parte importante de la vida de cada desarrollador, independientemente del entorno en el que se desarrolle. Y React Native no es una excepción. En este artículo, lo guiaré a través de algunos de los mejores marcos de UI, bibliotecas, componentes, herramientas de desarrollo y servicios web que lo harán un desarrollador React Native más feliz y productivo.. 

Editores de texto e IDE

Visual Studio Code es un editor de texto que tiene capacidades integradas de integración IntelliSense, depuración y Git. Lo que lo hace realmente bueno para el desarrollo React Native es su extensión React Native tools. Esto le permite ejecutar los comandos React Native desde la paleta de comandos, agregar IntelliSense para React Native APIs y depurar el código dentro del propio editor. 

Para obtener más información sobre cómo configurar Visual Studio Code para React Native, consulte esta publicación del blog: VSCode for React Native.

Si está utilizando Atom, puede instalar el complemento Nuclide. Este complemento fue creado específicamente para trabajar con proyectos React Native, Flow y Hack. Tiene un depurador incorporado y un inspector de elementos con todas las funciones a las que está acostumbrado en las Herramientas para desarrolladores de Chrome. El soporte de flujo significa que usted obtiene autocompletado, sugerencias de tipo y diagnósticos de código listos para usar. 

Si desea explorar más opciones de editor e IDE, consulte esta publicación de blog sobre los 10 mejores editores para React Native.

Herramientas de desarrollo

Las herramientas de desarrollo tienen un amplio alcance, por lo que agruparé cada herramienta en función de su enfoque:

  • SDK
  • calidad del código
  • pruebas
  • depuración

SDK

Cuando se trata de SDK para React Native, nada es mejor que Expo. Expo le permite crear prototipos de una aplicación fácilmente sin la necesidad de Android Studio o Xcode. Incluye un conjunto de componentes y bibliotecas para ayudarlo a acelerar su desarrollo. 

El flujo de trabajo de la Expo consiste en lo siguiente:

  1. Crea un nuevo proyecto usando create-react-native-app.
  2. Escribe el código en tu editor de texto favorito..
  3. Ejecutar la aplicación utilizando la aplicación cliente Expo. 

No hay necesidad de conectar su teléfono a su computadora. Simplemente escanee el código QR en su terminal utilizando la aplicación cliente Expo y se ejecutará automáticamente su aplicación. Si estás usando Genymotion, Expo también lo admite. 

La única desventaja al usar Expo es que no puede incluir ningún paquete personalizado que use la funcionalidad nativa del dispositivo. Expo ya incluye varios paquetes nativos de uso común, como la cámara, Facebook y el mapa. Pero si necesita usar un paquete que ya no son compatibles, entonces tendrá que "expulsar" su aplicación. En ese punto, su aplicación será como si fuera creada con react-init nativo, y también perderá la capacidad de ejecutarlo utilizando la aplicación cliente Expo..

Código de Calidad

Es importante verificar la calidad de su código, y es por eso que existen herramientas como ESLint. En pocas palabras, una herramienta de alineación le permite ser más consistente con su código al compararlo con una guía de estilo. Un ejemplo de esta guía de estilo es la Guía de estilo de JavaScript de Airbnb, que especifica las reglas sobre cómo se debe escribir el código JavaScript. La herramienta de alineación luego compara su código con esas reglas para asegurarse de que se hayan seguido. También hay una guía de estilo para proyectos React..

Si está utilizando Sublime Text, aquí hay un buen tutorial sobre cómo puede configurarlo para que pueda obtener comentarios en tiempo real sobre la calidad de su código mientras está codificando: Sublime Linting for React y ES6. Si está utilizando otro editor o IDE, asegúrese de buscar el complemento correspondiente que use ESLint.

Si desea agregar escritura estática a su proyecto, puede usar Flow. Flow agrega escritura estática sobre JavaScript sin que tenga que realizar ningún cambio en su base de código existente. Esto se debe a que Flow intenta inferir el tipo siempre que sea posible. Sin embargo, para proyectos nuevos, se recomienda que especifique explícitamente el tipo para obtener todos los beneficios del uso de Flow.

Para comenzar a utilizar Flow, aquí hay un tutorial sobre cómo configurar Flow para sus proyectos React Native..

Pruebas

Enzyme es una utilidad de prueba para React que le permite afirmar, manipular y atravesar la salida de su componente. Proporciona métodos tales como superficial() para "superficialmente" renderizar sus componentes, encontrar() atravesar el componente renderizado, y esperar() Afirmar los apoyos o el contenido representado dentro del componente..

Puede seguir esta guía sobre el uso de enzimas para probar componentes en React Native para hacer que su aplicación React Native pueda probarse con enzimas. Si eres nuevo en enzimas, puedes leer este tutorial sobre cómo probar los componentes React con enzimas y mocha..

Depuración

Reactotron es una aplicación de escritorio que te permite depurar las aplicaciones React y React Native. Algunas de sus características clave incluyen la inspección, modificación y suscripción al estado de la aplicación, el seguimiento de las solicitudes HTTP realizadas a través de la aplicación, la evaluación comparativa del rendimiento de la aplicación y el seguimiento de los errores. Si estás usando Redux, incluso puedes enviar acciones y rastrear sagas desde Reactotron.

Calderas y marcos de interfaz de usuario

Snowflake es una plantilla para el desarrollo nativo React de pila completa. Incluye todo, desde el front-end hasta el back-end de la aplicación. Entonces, si solo quiere una herramienta que pueda ayudarlo a comenzar rápidamente, entonces puede encontrar que Snowflake es útil. Puede leer las notas para obtener más información sobre qué paquetes y herramientas se utilizan para ponerlo.

Alternativamente, puedes usar Ignite. Es una herramienta de línea de comandos que también incluye una placa de calderas, generadores, guía de estilo para componentes de UI, herramienta de prueba de API y más. 

React Native ya viene con componentes de UI que puede usar para la interacción del usuario. El problema es que solo tienen el estilo más básico para que cada componente se distinga por lo que es (por ejemplo, botón, casilla de verificación). Si desea agregar estilos personalizados, tiene que escribir su propio código CSS. 

Aquí es donde entra en juego NativeBase. Permite que su aplicación tenga una apariencia verdaderamente nativa al implementar el mismo diseño que se usa en las aplicaciones nativas de Android (Material Design) y iOS (Human Interface Guidelines). Fuera de la caja, obtiene componentes personalizados como botones de acción flotante, giradores y, lo mejor de todo, componentes de formulario.

Bibliotecas y Componentes

React Native tiene una gran comunidad detrás, por lo que hay muchas bibliotecas y componentes que puedes usar. Podríamos pasar todo el día hablando sobre esto, así que, para ser breve, me centraré en las siguientes áreas:

  • navegación
  • administración del Estado
  • animaciones
  • Componentes y bibliotecas de uso común.

Navegación

React Navigation le permite implementar fácilmente la navegación en sus aplicaciones React Native mediante el uso de sus navegadores integrados, como el Navegador de pila, el Navegador de pestaña y el Navegador de cajón. Sin embargo, eso no es todo: además de la navegación dentro de la aplicación, también incluye vínculos profundos, integración de Redux e integración web. Esto lo convierte en una biblioteca realmente robusta para implementar la navegación..

Administración del Estado

MobX proporciona la funcionalidad para actualizar y administrar el estado de la aplicación utilizada por React. Lo que lo hace un buen candidato para la administración estatal en React es su simplicidad y capacidad de prueba. También tiene una curva de aprendizaje corta, por lo que cosas como funciones asíncronas y valores computados ya se manejan entre bastidores. 

Para aplicaciones más grandes y complejas, se recomienda Redux. Esto se debe a que MobX es muy liberal, no a diferencia de Redux, que proporciona pautas estrictas sobre cómo debe administrarse el estado. Así que es una opción más inteligente para proyectos más grandes con más gente trabajando en ellos..

Animaciones

React Native ya tiene una API de animación incorporada. De hecho, no hay solo una, sino dos API para trabajar con animación: API animada y LayoutAnimation. Esos dos son muy poderosos pero pueden ser engorrosos, especialmente si todo lo que quieres hacer es aplicar animaciones básicas como mover un objeto hacia arriba o hacia abajo o hacer que rebote. En tales casos, componentes como Animatable son útiles.

Componentes y bibliotecas de uso común

Aquí hay una lista de componentes y bibliotecas que se usan comúnmente en los proyectos React Native. Estos son compatibles con dispositivos Android y iOS:

  • componentes de estilo: le permite escribir código CSS para diseñar sus componentes React.
  • reaccionar-nativo-calendario: para mostrar un calendario con el que los usuarios pueden interactuar.
  • reactivo-nativo-selector de fechas: para recoger fechas y horarios.
  • reaccionar-nativo-progreso: para crear barras de progreso y hilanderos..
  • reaccionar nativo-spinkit: una colección de indicadores de carga. 
  • Iconos vectoriales: le permite usar íconos de sus fuentes de fuentes de íconos favoritas como Font Awesome y Material Icons.
  • reaccionar-nativo-swiper: convierte una colección de imágenes o contenedores en componentes de barrido.
  • reaccionar nativo-desplazable-tab-vista: navegación con pestañas que puedes deslizar entre.
  • reaccionar-nativo-lightbox: para ver imagenes en pop-overs a pantalla completa.
  • mapas nativos de reacción: le permite integrar Google Maps en sus aplicaciones. No todas las funciones disponibles en la API de Google Maps están disponibles, pero la funcionalidad que proporciona debería ser suficiente en la mayoría de los casos.
  • SGListView: una implementación amigable con la memoria del componente ListView incorporado de React Native. Si necesita mostrar listas enormes en su aplicación, use esto en lugar de ListView.
  • Formik: hace que tratar con formas en React Native sea menos doloroso. Le permite obtener valores dentro y fuera del estado del formulario, validar sus formularios y manejar su envío.
  • reaccionar-nativo-i18n: para implementar la internacionalización en tus apps..
  • reaccionar-nativo-enviar-notificación: implementa notificaciones push locales y remotas.
  • Búsqueda instantánea: una colección de componentes para implementar la búsqueda.
  • reaccionar-nativo-fs: le permite acceder al sistema de archivos nativo del dispositivo.
  • reaccionar-nativo-cámara: un componente de la cámara que le permite tomar fotos y videos desde su aplicación.
  • reaccionar-nativo-video: para reproducir videos desde su sistema de archivos o desde una URL.
  • reaccionar-nativo-sqlite-almacenamiento: para almacenar y manipular datos de una base de datos SQLite.
  • reaccionar-nativo-tienda: un almacén de clave-valor basado en AsyncStorage.
  • reaccion-native-webrtc: para implementar WebRTC.

Servicios web

Puede crear aplicaciones sin servidor y facilitar la implementación de sus aplicaciones React Native mediante el uso de servicios web. Hay una gran cantidad de servicios web por ahí, pero me centraré en las siguientes áreas:

  • base de datos
  • analítica
  • notificaciones push
  • actualizaciones de código
  • integración continua

Base de datos

Realm es una base de datos en tiempo real con un enfoque en aplicaciones móviles. Incluye características como la sincronización de datos bidireccional, las capacidades sin conexión primero y la inserción de datos. La base de datos móvil de Realm es de código abierto y multiplataforma, lo que significa que puede alojar el servidor de objetos de Realm en su propio servidor y luego usar la biblioteca de JavaScript de Realm de forma gratuita.. 

No todas las funciones están disponibles en la edición para desarrolladores, pero en la mayoría de los casos de uso, debería estar bien solo con la edición para desarrolladores, ya que incluye funciones básicas como la Base de datos de objetos, la Sincronización en tiempo real y la Autenticación. A continuación, le ofrecemos una comparación de lo que obtiene por cada edición: Realm Products y Pricing..

Si Realm es demasiado para sus necesidades, siempre puede atenerse a la API AsyncStorage que viene con React Native.

Analítica

Fabric es un servicio todo en uno que le permite, entre otras cosas, agregar análisis en su aplicación. Hay Respuestas, que le proporciona estadísticas en tiempo real sobre cómo se está utilizando su aplicación. Esto incluye el número de usuarios activos, la duración de la sesión y la tasa de retención. También hay Crashlytics, lo que le da potentes capacidades de reporte de fallas. Todo esto sucede en tiempo real, y puede verlo en el panel de control en tiempo real de Fabric. Puede usar la biblioteca de Fabric para configurar fácilmente Fabric para su aplicación React Native.

Si prefiere seguir con una solución probada como Google Analytics, también hay una biblioteca que le permite hacerlo..

Notificaciones push

Realmente no hay competencia cuando se trata de implementar notificaciones push en aplicaciones. Firebase Cloud Messaging (anteriormente conocido como Google Cloud Messaging) le permite enviar notificaciones push a aplicaciones tanto de Android como de iOS. Puede usar el paquete react-native-fcm para comunicarse con FCM desde su aplicación.

Actualizaciones de código

CodePush le permite implementar actualizaciones de código para aplicaciones móviles directamente en los dispositivos de los usuarios. CodePush actúa como un repositorio central donde puede implementar cambios en HTML, CSS, JavaScript y activos como imágenes. El código correspondiente de CodePush en la aplicación luego tirará de estos cambios. Esto es excelente para enviar correcciones de errores a la aplicación sin la necesidad de cargarla en la tienda de aplicaciones y esperar a que los usuarios actualicen la aplicación. Puede usar este paquete para obtener actualizaciones de CodePush dentro de su aplicación React Native.

Integración continua

Bitrise es un servicio de entrega continua para el desarrollo de aplicaciones móviles. Le permite ejecutar sus pruebas, crear la aplicación y enviarla automáticamente a los dispositivos de sus usuarios cada vez que implemente su código. 

Bitrise se integra con una gran cantidad de servicios en cada paso de su flujo de trabajo de desarrollo. Por ejemplo, cuando usted empuja a sus sucursales de lanzamiento en GitHub, Bitrise recibe una notificación de ese impulso a través de los webhooks. Entonces comenzará a ejecutar las pruebas. Una vez que pasan las pruebas, comienza el proceso de construcción. Si es solo una "versión de software" (por ejemplo, cambios en el código de JavaScript), los cambios se pueden implementar en los usuarios a través de CodePush. Pero si hay cambios en el código nativo (por ejemplo, si agregaste un complemento de la cámara), Bitrise también puede crear un APK o IPA archivar e implementar en Google Play o iTunes Connect.

Fastlane es una colección de herramientas que automatiza el proceso de compilación y lanzamiento para aplicaciones de Android e iOS. Para iOS, maneja tareas como ejecutar sus pruebas, generar capturas de pantalla, firmar códigos y lanzar la aplicación a la tienda de aplicaciones. También incluye herramientas de prueba beta como Pilot y Boarding.. Piloto le permite cargar su aplicación a iTunes Connect y administrar sus probadores beta TestFlight directamente desde la línea de comandos. Boarding crea una página de registro para los probadores beta de TestFlight.

Las herramientas están más orientadas a la implementación de iOS, pero también puede beneficiarse si está implementando aplicaciones de Android. Actualmente, solo hay dos herramientas disponibles para la implementación de Android: Supply y Screengrab. 

Suministro le permite automatizar la carga de activos como el ícono de la aplicación, los gráficos promocionales y las capturas de pantalla de su aplicación. También le permite actualizar sus aplicaciones existentes en Google Play Store. 

Captura de pantalla, Por otro lado, automatiza la generación de capturas de pantalla para múltiples dispositivos. Cada captura de pantalla también se puede localizar si su aplicación admite varios idiomas..

Conclusión

¡Eso es! En este artículo, ha aprendido acerca de algunas de las herramientas, bibliotecas y servicios que puede utilizar al desarrollar aplicaciones React Native. ¿Que pasa contigo? ¿Cuáles son sus herramientas de acceso cuando se trata de desarrollar aplicaciones en React Native??

Y mientras esté aquí, consulte algunas de nuestras otras publicaciones sobre el desarrollo de aplicaciones React Native!