Introducción
Expo es un marco y una plataforma para aplicaciones universales de React. Es un conjunto de herramientas y servicios creados en torno a React Native y plataformas nativas que lo ayudan a desarrollar, construir, implementar e iterar rápidamente en iOS, Android y aplicaciones web desde la misma base de código JavaScript /TypeScript.
Flujo de trabajo
Los dos enfoques para crear aplicaciones con las herramientas de Expo se denominan flujos de trabajo "administrados" y "básicos".
- Con el flujo de trabajo administrado, solo escribe herramientas y servicios de JavaScript /TypeScript y Expo hace el resto por usted.
- En el flujo de trabajo simple, tiene control total sobre todos los aspectos del proyecto nativo, y las herramientas de Expo no pueden ser tan útiles.
Flujo de trabajo gestionado
Las aplicaciones se crean con un flujo de trabajo administrado utilizando expo-cli, el cliente de Expo en su dispositivo móvil y otros servicios como: notificaciones push, servicio de compilación y actualizaciones inalámbricas (OTA). Expo intenta gestionar la complejidad de la creación de aplicaciones tanto como sea posible, por lo que se denomina flujo de trabajo gestionado.
Un desarrollador que usa un flujo de trabajo administrado no necesita usar Xcode o Android Studio, solo escribe código JavaScript y administra la configuración para cosas como el ícono de la aplicación y la pantalla de presentación a través de app.json. Expo SDK expone un conjunto cada vez más completo de API que le brindan el poder de acceder a las funciones del dispositivo, como la cámara, la autenticación biométrica, el sistema de archivos, la óptica, etc. Si bien puede hacer mucho con el flujo de trabajo administrado, no puede hacer todo con él, por lo que puede encontrarse con limitaciones.
¿Qué sucede si me encuentro con una limitación?
Si llega al punto en el que tiene el control total del código nativo en su aplicación, puede "eject" (expulsar) (ejecutar expo eject
en su proyecto) y cli-expo exhibirá todos los proyectos y la configuración nativa subyacente. Entonces utilizará el flujo de trabajo básico.
Limitaciones del flujo de trabajo administrado
El flujo de trabajo no será adecuado para todas las aplicaciones posibles. Hay muchos casos en los que sus limitaciones actuales pueden no ser adecuadas para su proyecto. A continuación, se muestra una lista de limitaciones que conocemos y que pueden afectar su decisión sobre si el flujo de trabajo administrado es adecuado para su proyecto.
No todas las API de iOS y Android están disponibles
Se admiten muchas API de dispositivos, pero no todas las API de iOS y Android ya están disponibles: por ejemplo, no hay soporte para Bluetooth o WebRTC. En cuanto a las compras en la aplicación y la integración de Apple y Google Pay, están en desarrollo. Constantemente se agregan nuevas API, pero si no hay algo que necesite en este momento, puede usar el flujo de trabajo básico o seguir el blog oficial para ver las notas de la versión de actualización del SDK.
El SDK no admite todos los tipos de ejecución de código en segundo plano
La ejecución en segundo plano es la capacidad de ejecutar código cuando la aplicación no está en primer plano o el dispositivo está suspendido. Expo admite la geolocalización en segundo plano (incluida la geovalla) y la recuperación en segundo plano, pero aún no admite audio de fondo con los controles de reproducción del sistema operativo, y las notificaciones push no se pueden administrar en segundo plano. Este es un trabajo en progreso.
Tamaño de la aplicación
Si necesita mantener el tamaño de su aplicación extremadamente reducido, el flujo de trabajo administrado puede no ser la mejor opción
El tamaño de una aplicación de Expo administrada en iOS es de unos 20 MB (descarga) y de Android unos 15 MB. Esto se debe a que "administrado" incluye muchas API independientemente de si las está usando o no: esto le permite enviar actualizaciones inalámbricas para usar nuevas API, pero tiene un costo binario. Algunas de las API incluidas están vinculadas a servicios que es posible que no utilice, por ejemplo, el SDK de Facebook Mobile se incluye para admitir el inicio de sesión de Facebook y los anuncios de Facebook, junto con el SDK de Google Mobile por razones similares. Lo haremos personalizable en el futuro, para que podamos reducir el tamaño de los archivos binarios. Obtenga más información sobre cómo administrar el tamaño de su aplicación aquí.
Las bibliotecas nativas para integrarse con servicios propietarios generalmente no se incluyen en el SDK
En relación al punto anterior, Expo generalmente evita agregar módulos nativos al SDK si están conectados a servicios propietarios externos. En estos casos, los desarrolladores podrán utilizar el flujo de trabajo básico expulsando su proyecto.
El único servicio de notificaciones push admitido es el servicio de notificaciones de Expo
Si desea utilizar otro servicio de notificaciones push, como OneSignal, en lugar del servicio /API de notificaciones push de Expo, debe utilizar un flujo de trabajo básico.
Las versiones mínimas de SO compatibles son Android 5+ e iOS 10+
Si necesita admitir versiones anteriores, no podrá utilizar el flujo de trabajo administrado.
A veces, las compilaciones gratuitas se pueden poner en cola
Puede crear fácilmente su propia aplicación de envío a la tienda sin siquiera instalar Xcode o Android Studio utilizando el servicio de compilación independiente gratuito, pero a veces tiene una cola dependiendo de cuántas otras personas estén construyendo un binario en este momento. Puede tener acceso a una infraestructura de compilación dedicada con un plan de "prioridad" o, si lo prefiere, puede ejecutar compilaciones en su propio CI.
Expo se está desarrollando activamente para crear soluciones a todas las limitaciones enumeradas anteriormente.
Flujo de trabajo desnudo
En el flujo de trabajo básico, el desarrollador tiene el control total, junto con la complejidad que conlleva. Puede utilizar la mayoría de las API en Expo SDK, pero el servicio de creación y la configuración sencilla con app.json aún no son compatibles. Puede consultar tutoriales y guías orientados a aplicaciones nativas de iOS y Android y React Native para obtener alternativas.
Límites de flujo de trabajo desnudo (no administrado)
En el flujo de trabajo simple, tiene acceso completo a los proyectos nativos subyacentes y a cualquier código nativo. Todo lo que pueda hacer en un proyecto nativo se puede hacer en Expo con un flujo de trabajo básico. Por lo tanto, la siguiente lista está dirigida específicamente a las limitaciones que existen en el uso de las herramientas y servicios de Expo en el flujo de trabajo básico.
El servicio de compilación funciona solo en el flujo de trabajo administrado
Para crear los binarios de sus aplicaciones para su distribución en Apple App Store y Google Play Store, tendrá que seguir los mismos pasos que haría en cualquier proyecto nativo, el servicio de compilación de Expo no puede manejarlo por usted. Expo está trabajando para proporcionar soporte de flujo de trabajo básico para el servicio de construcción en un futuro próximo.
La configuración debe realizarse en cada proyecto nativo en lugar de una vez con app.json
La configuración de los íconos de la aplicación, la pantalla de presentación, etc., debe configurarse en proyectos nativos para cada plataforma utilizando herramientas nativas estándar, en lugar de usar una sola vez un objeto JSON simple.
Qué flujo de trabajo elegir
- Expo nunca te bloquea, puedes "expulsar" en cualquier momento y tu proyecto será solo un proyecto nativo típico con los paquetes React Native y Expo SDK instalados y configurados.
- Si es nuevo en el desarrollo móvil o nuevo en el desarrollo en general, le recomendamos que utilice el flujo de trabajo administrado. Existe una enorme cantidad de complejidad que viene con la cadena de herramientas de desarrollo nativa, y el flujo de trabajo administrado le permite administrar esa complejidad solo cuando es absolutamente necesario.
- Además, si tiene más experiencia, no está mal comenzar cada nuevo proyecto con el flujo de trabajo administrado y "expulsarlo" solo si es necesario.
En resumen, use el flujo de trabajo simple cuando sea necesario debido a limitaciones; de lo contrario, use el flujo de trabajo administrado y expulse el proyecto si es necesario.
Comparación de flujo de trabajo
Características | Flujo de trabajo gestionado | Flujo de trabajo desnudo |
---|---|---|
Desarrollar aplicaciones con solo JavaScript /mecanografiado | ✅ | |
Expo para crear compilaciones de iOS y Android | ✅ | ⏱ (en desarrollo) |
Servicio de notificaciones push de Expo | ✅ | ✅ |
Actualizaciones de la expo | ✅ | ✅ |
Desarrollar aplicación con el cliente de Expo | ✅ | ✅ |
Acceso al Expo SDK | ✅ | ✅ |
Código nativo personalizado y gestión de dependencias nativas | ✅ | |
Desarrollar en Xcode y Android Studio | ✅ |
Conclusión
En este tutorial hicimos una breve descripción general de Expo Framework.
Lea este tutorial para instalar Expo en Linux: Cómo instalar el marco Expo para React en Linux .
Aquí puedes encontrar todos los artículos dedicados a la Expo: