exponentjs - run - react native windows
¿Cuál es la diferencia entre Expo y React Native? (7)
Desde el sitio web de la Expo
Expo permite a los desarrolladores web crear aplicaciones verdaderamente nativas que funcionen en iOS y Android escribiéndolas una vez en JavaScript.
¿No es esto lo que hace React Native? ¿Cual es la diferencia?
La respuesta de Brent Vatne está bien, pero me gustaría agregar algunos detalles.
Expo expande la superficie API de React Native
React Native no le brinda todas las API de JS que necesita de manera inmediata, sino solo las características más primitivas. Se espera que los desarrolladores de React Native usen Android Studio / XCode para vincular bibliotecas nativas adicionales. Expo tiene como objetivo mejorar RN y proporcionar toda la API JS que necesita para las necesidades más comunes. Básicamente es un conjunto de bibliotecas nativas de calidad bien definidas ya empaquetadas en una sola biblioteca: ExpoKit. A veces, estas bibliotecas ya existen en el mundo RN y están integradas en ExpoKit.
También es importante tener en cuenta que el equipo de Expo no puede incluir todas las bibliotecas en ExpoKit (lo que puede crear cierta frustración) porque el tamaño de la aplicación hello world crecería, ya que enviaría una gran cantidad de API que no se usarían en la mayoría de las aplicaciones.
Expo proporciona actualizaciones JS por aire
Al igual que otros sistemas (CodePush ...), Expo proporciona un sistema para actualizar su aplicación de forma inalámbrica. Esto significa que carga su paquete JS en un CDN y las aplicaciones móviles descargarán automáticamente y usarán el nuevo JS en el próximo inicio (sin solicitar una publicación / revisión de las tiendas).
Expo proporciona una herramienta CLI para cargar / administrar los paquetes JS en su CDN. Para el desarrollo, también puede optar por convertirse en CDN y alojar el paquete JS en localhost. Y XDE es solo un contenedor visual en la CLI.
Expo ofrece un cliente genérico
El cliente de Expo es un cliente genérico que permite cargar cualquier aplicación que sea compatible con Expo. Todas las aplicaciones de Expo comparten exactamente el mismo tiempo de ejecución nativo (RN + ExpoKit), la única diferencia es el JS que les damos. Las aplicaciones de Expo que publica en las tiendas de aplicaciones tienen su URL de paquete JS codificada. El cliente Expo se crea de una manera específica para que pueda elegir desde qué url cargar el JS, escaneando un QRCode o proporcionando una url.
Tenga en cuenta que este cliente también puede cargar paquetes JS desde localhost y facilitar su experiencia de desarrollo: no necesita XCode o Android Studio, y se vuelve mucho más rápido ejecutar su primer Hello World en el teléfono (de horas a minutos). En realidad, puede desarrollar en un iPhone sin una Mac y la configuración tarda 2 minutos.
En realidad, dado que el SDK de Expo se puede actualizar, el cliente de Expo incluye una capa de compatibilidad para que pueda ejecutar las últimas 5 versiones del SDK.
Expo ofrece un servicio de construcción
Como todas las aplicaciones de Expo comparten el mismo código nativo, Expo puede crear fácilmente estas aplicaciones para usted. Han creado un servicio de compilación en la nube.
Lo principal que diferencia las 2 aplicaciones creadas por Expo es solo la url codificada en la que se supone que la aplicación debe descargar el paquete JS para ejecutar.
Expo hace algunas otras cosas por usted, como proporcionar una forma declarativa de configurar íconos de aplicaciones, orientaciones, permisos, claves de API, ayudarlo a configurar notificaciones push, aprovisionar perfiles ... muchas configuraciones deben codificarse en el momento de la creación de la aplicación y pueden No se puede cambiar por el aire.
Expo es reaccionar nativo lo que Phonegap es para Córdoba
React Native es similar a Cordova. No es la misma tecnología de visualización (nativa frente a vista web), pero ambas le permiten controlar las características nativas desde javascript, y ambas ofrecen un sistema de complementos para que los desarrolladores puedan agregar fácilmente nuevos enlaces JS / nativos.
PhoneGap es similar a Expo. Ambos intentan enriquecer la API sin procesar de la plataforma subyacente en la que están construidos con un conjunto predefinido de complementos nativos adicionales. PhoneGap también ofrece un servicio de compilación y tiene un cliente genérico que funciona siempre que use los complementos aprobados.
Conclusión
Como puede ver, Expo es un conjunto de herramientas. Al final, permite desarrollar, compartir y publicar fácilmente en las tiendas sus proyectos móviles. Es bastante similar a la experiencia PhoneGap (pero mucho mejor y menos confuso).
Definitivamente recomendaré Expo para cualquier nuevo proyecto greenfield React Native, excepto estos 2 casos:
- Ya sabe que necesita API que no están disponibles en Expo y que no lo estarán pronto
- Te importa mucho el tamaño de tu aplicación (HelloWorld es> 25mb debido al gran tamaño de ExpoKit, pero después de eso no aumenta mucho, ya que es solo JS)
Quisiera señalar aquí que Expo está usando una versión anterior de react 16.5 que le prohibiría usar la nueva función de ganchos. Si decides ir con Expo, ten cuidado de ver los controles de tu versión. Las versiones anteriores de say react-navigation deberán utilizarse con la versión 16.5 si obtiene errores extraños.
Se explica en la documentación oficial de la Expo.
¿Cuál es la diferencia entre Expo y React Native?
Expo es como Rails para React Native. Muchas cosas están configuradas para usted, por lo que es más rápido comenzar y seguir el camino correcto.
Con Expo, no necesitas Xcode o Android Studio. Simplemente escriba JavaScript utilizando el editor de texto con el que se sienta cómodo (Atom, vim, emacs, Sublime, VS Code, lo que quiera). Puede ejecutar XDE (nuestro software de escritorio) en Mac, Windows y Linux.
Estas son algunas de las cosas que Expo le ofrece de manera inmediata:
Soporte para iOS y Android
Puede usar aplicaciones escritas en Expo en iOS y Android de inmediato. No necesita pasar por un proceso de compilación separado para cada uno. Simplemente abra cualquier aplicación Expo en la aplicación Expo Client desde App Store en iOS o Android (o en un simulador o emulador en su computadora).
Notificaciones push
Las notificaciones push funcionan directamente desde iOS y Android, utilizando una única API unificada. No tiene que configurar APNS y GCM / FCM o configurar ZeroPush ni nada de eso. Creemos que hemos hecho esto tan fácil como puede ser ahora.
Facebook Login
Puede llevar mucho tiempo configurarlo usted mismo, pero debería poder hacerlo funcionar en 10 minutos o menos en Expo.
Actualización instantánea
Todas las aplicaciones de Expo se pueden actualizar en segundos simplemente haciendo clic en Publicar en XDE. No tienes que configurar nada; simplemente funciona de esta manera. Si no está usando Expo, usaría Microsoft Code Push o lanzaría su propia solución para este problema
Gestión de activos
Las imágenes, videos, fuentes, etc. se distribuyen dinámicamente a través de Internet con Expo. Esto significa que funcionan con actualizaciones instantáneas y se pueden cambiar sobre la marcha. El sistema de gestión de activos integrado en Expo se encarga de cargar todos los activos en su repositorio a un CDN para que se carguen rápidamente para cualquier persona.
Sin Expo, lo normal es agrupar sus activos en su aplicación, lo que significa que no puede cambiarlos. O tendría que administrar poner sus activos en un CDN o similar usted mismo.
Actualización más fácil a nuevas versiones de React Native
Hacemos nuevos lanzamientos de Expo cada pocas semanas. Puede quedarse con una versión anterior de React Native si lo desea, o actualizar a una nueva, sin preocuparse por reconstruir su aplicación binaria. Puede preocuparse por actualizar JavaScript en su propio tiempo.
Pero no hay módulos nativos ...
Lo más limitante de Expo es que no puede agregar sus propios módulos nativos sin desconectar y usar ExpoKit.
Traté de hacer un resumen de la documentación y las respuestas de los empleados de la Expo:
Reaccionar init nativo:
Ventajas :
- Puede agregar módulos nativos escritos en Java / Objective-C (probablemente el único pero el más fuerte)
Desventajas
- Necesita Android Studio y XCode para ejecutar los proyectos
- No puedes desarrollar para iOS sin tener una Mac
- El dispositivo debe estar conectado a través de USB para usarlo para las pruebas
- Las fuentes deben importarse manualmente en XCode
- Si desea compartir la aplicación, debe enviar todo el archivo .apk / .ipa
- No proporciona API JS listas para usar, por ejemplo, notificaciones push, Asset Manager, deben instalarse manualmente y vincularse con npm, por ejemplo
- Configurar un proyecto que funcione correctamente (incluida la configuración del dispositivo) es bastante complicado y puede llevar tiempo
Expo
Ventajas :
- Configurar un proyecto es fácil y se puede hacer en minutos
- Usted (y otras personas) pueden abrir el proyecto mientras trabaja en él.
- Compartir la aplicación es fácil (a través de un código QR o un enlace), no tiene que enviar todo el archivo .apk o .ipa
- No es necesario construir para ejecutar la aplicación
- Integra algunas bibliotecas básicas en un proyecto estándar (Notificaciones Push, Asset Manager, ...)
- Puede expulsarlo a ExpoKit e integrar código nativo continuando usando algunas de las características de Expo, pero no todas
- Expo puede construir archivos .apk y .ipa (es posible la distribución a tiendas con Expo)
Desventajas
- No puede agregar módulos nativos (probablemente un cambio de juego para algunos)
- No puede usar bibliotecas que usan código nativo en Objective-C / Java
- La aplicación estándar Hello World es de aproximadamente 25 MB (debido a las bibliotecas integradas)
- Si desea utilizar: FaceDetector, ARKit o Payments, debe expulsarlo a ExpoKit
- Expulsarlo a ExpoKit tiene una compensación de características de Expo, por ejemplo, no puede compartir a través de un código QR
- Al expulsar a ExpoKit, está limitado a la versión nativa de reacción que es compatible con ExpoKit en ese momento
- La depuración en ExpoKit (con módulos nativos) es mucho más complicada, ya que combina dos idiomas y bibliotecas diferentes (ya no hay soporte oficial de Expo)
Espero poder resumir los puntos más importantes. Por favor, siéntase libre de agregar puntos adicionales.
Fuentes: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/issues/516#issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (documentación oficial en general)
Ventajas de EXPO CLI : 1. No es necesario instalar Android Studio y Xcode para comenzar a crear aplicaciones móviles. 2. Ningún requisito de máquina de alta configuración para el desarrollo. 3. La interfaz de usuario móvil verifica fácilmente en ambos dispositivos Android y iPhone usando el escaneo de código de barras. Y en algún momento puede verificar simuladores de iPhone y Android en línea. 4. desarrollo rápido. Contras: - 1. La dependencia nativa no se puede agregar en la expo porque el proyecto expo no tiene la carpeta ios y android, por lo que aquí la expo está limitada. 2. Hacer apk y ipa son difíciles de usar expo. Reaccionar Cli nativo
Pros: - 1. Agregue fácilmente la dependencia nativa para Android y iOS porque esta estructura de proyecto tiene una carpeta iOS y Android. 2. La creación de apk y ipa build es más fácil que expo. Nota ": - React Native cli es el enfoque correcto para comenzar a trabajar en el marco nativo de reacción. Contras: - 1. Se requiere una máquina de alta configuración. 2. Agregar dependencia en algún momento es más difícil pero bueno. estructura de carpetas ios pero de esto aprenda más cosas.
Puede preferir cualquier enfoque según sus requisitos.
Yo trabajo en la Expo!
Cuando escribe código en
Expo
, escribe código
React Native
.
Expo
tiene dos piezas principales:
1)
expo-cli
: una herramienta de desarrollador para crear proyectos, ver registros, abrir en su dispositivo, publicar, etc.
2) El cliente
Expo
: una aplicación en su teléfono que le permite abrir sus proyectos mientras está trabajando en ellos, sin necesidad de pasar por
XCode
o
Android Studio
, ¡y también permite que otras personas los vean también!
Y si lo publica a través de
expo-cli
, las personas pueden acceder a él en cualquier momento a través del cliente
Expo
en Android o en iOS si inició sesión en la misma cuenta con la que se publicó.
Por último, también hacemos posible crear aplicaciones independientes para que las personas no tengan que usar el cliente
Expo
para abrirlo, y puede distribuirlo a la tienda de aplicaciones y play store si lo desea.
Entonces,
Expo
es un conjunto de herramientas construidas sobre / alrededor de
React Native
.
Estas herramientas dependen de una creencia clave que tenemos en
Expo
: es posible construir la mayoría de las aplicaciones sin necesidad de escribir código nativo, siempre que tenga un conjunto completo de API expuestas a
Javascript
.
Esto es importante porque con
React Native
siempre puede desplegarse en código nativo.
Esto es increíblemente útil a veces, pero tiene un costo: debe enviar a las personas sus archivos binarios si desea que los prueben, alguien en el otro lado del mundo no puede simplemente tocar un enlace para abrirlo mientras está trabajando en él y no puede simplemente publicarlo con un clic para que alguien acceda a él de forma similar a como lo haría en un navegador.
Con
Expo
, le sugerimos que intente evitar caer al código nativo, si puede.
Como mencioné anteriormente, creemos que con un conjunto completo de API disponibles para
Javascript
, esto no debería ser necesario para la mayoría de las aplicaciones.
Por lo tanto, nuestro objetivo es proporcionar este conjunto integral de API, y luego construir todas las herramientas increíbles que pueden existir en un mundo donde se comparte el tiempo de ejecución nativo.
Sin embargo, si debe descubrir que se
ExpoKit
absolutamente a nativo, puede usar
ExpoKit
para continuar usando las API nativas que
Expo
le brinda mientras tiene el mismo nivel de control que tendría en cualquier proyecto nativo.
"
ExpoKit
es una biblioteca Objective-C y Java que le permite utilizar la plataforma
Expo
y su proyecto
Expo
existente como parte de un proyecto nativo estándar más grande".
Leer más aquí.
expo es una cadena de herramientas construida alrededor de React Native para ayudarlo a iniciar rápidamente una aplicación. Proporciona un conjunto de herramientas que simplifican el desarrollo y las pruebas de la aplicación React Native, la interfaz y los servicios que generalmente están disponibles en componentes React Native de terceros. Con Expo puede encontrarlos todos en el SDK de Expo.