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?
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?
Respuestas:
Yo trabajo en la Expo!
Cuando escribes código Expo
, escribes React Native
código.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 Expo
cliente: una aplicación en su teléfono que le permite abrir sus proyectos mientras se está trabajando en ellas, sin necesidad de pasar por XCode
o Android Studio
, y también permite que otras personas los ven también! Y si lo publica expo-cli
, las personas pueden acceder a él en cualquier momento a través del Expo
cliente en Android o en iOS si inició sesión en la misma cuenta con la que se publicó. Por último, también hacemos posible la creación de aplicaciones independientes para que las personas no tengan que usar el Expo
cliente para abrirlo, y puede distribuirlo a la tienda de aplicaciones y play store si lo desea.
Entonces, Expo
es un conjunto de herramientas construido sobre / alrededor React Native
. Estas herramientas dependen de una creencia clave que mantenemos 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 aJavascript
.
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 trabaja 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 paraJavascript
, 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 despliega absolutamente a nativo, puede usarlo 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 de Objective-C y Java que le permite utilizar la Expo
plataforma y su Expo
proyecto existente como parte de un proyecto nativo estándar más grande". Leer más aquí.
Traté de hacer un resumen de la documentación y las respuestas de los empleados de la Expo:
Reaccionar init nativo:
Ventajas :
desventajas :
Expo
Ventajas :
desventajas :
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)
La respuesta de Brent Vatne está bien, pero me gustaría agregar algunos detalles.
React Native no le brinda todas las API de JS que necesita de forma inmediata, sino solo la mayoría de las características primitivas. Se espera que los desarrolladores de React Native utilicen 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 utilizarían en la mayoría de las aplicaciones.
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.
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.
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.
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.
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:
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. Hay muchas cosas 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 tanto en iOS como en 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 ni configurar ZeroPush ni nada de eso. Creemos que hemos hecho esto tan fácil como puede ser ahora.
Inicio de sesión en Facebook
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 de 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.
Expo XDE
consola o en la exp start
salida del comando de la consola.
expo start
también le mostrará una dirección IP en su host local desde donde puede acceder al código QR
EXPO CLI
pros: -
1. No need to install Android studio and Xcode for start building mobile app.
2. No requirement of high configuration machine for development.
3. Mobile ui easily check on both devices android and iphone using barcode scanning.and some time you can check on online iphone and android simulators.
4. fast development.
Contras:-
1. Native dependency can not add on expo because expo project don't have ios and android folder so here expo is bounded.
2. Making apk and ipa are to difficult using expo.
3. Size of the apk/ipa is huge
Reaccionar Cli nativo
Pros: -
1. Easily add native dependency for android and ios because this project structure have ios and android folder.
2. Apk and ipa build making is easy rather than expo.
Note":- React Native cli is right approach to started work on react native framework.
Contras:-
1. High configuration machine is require.
2. Adding dependency some time more difficult but good.
3. Required basic knowledge of android folder structure and ios folder structure but from this learn more things.
Puede preferir cualquier enfoque según sus requisitos.
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 decide ir con Expo, tenga en cuenta ver los controles de su versión. Las versiones anteriores de say react-navigation deberán usarse con la versión 16.5 si obtiene errores extraños.
expo update
hace un muy buen trabajo al obtener las versiones compatibles para la mayoría de los paquetes administrados por Expo. En este momento, no creo que actualice React Navigation, pero esa biblioteca en realidad está patrocinada por Expo. Personalmente, rara vez me encuentro con problemas de compatibilidad entre React Navigation y Expo (creo que encontré un par de problemas al usar versiones beta). Sin embargo, es posible que vea más problemas de compatibilidad con paquetes no administrados por Expo.
Las respuestas sobre las ventajas y desventajas de expo y react-native-cli están completas. Quiero mencionar otro punto como mi experiencia personal. Expo contiene muchos módulos por defecto en el proyecto y hace que sea más fácil trabajar con él. Pero tiene un gran problema en la fase de producción porque la versión construida android
y las ios
versiones tienen un tamaño tan grande. Por ejemplo, si tiene una única página con un 'Hello World'
el apk
tamaño del archivo sería de alrededor 19 MB
. Tener un mismo proyecto en react-native-cli dará como resultado una aplicación con el tamaño de 6 MB
.
Entonces, personalmente, no recomiendo usar expo si desea desarrollar una aplicación comercial.
He experimentado más de un año que funciona con la expo. Si el tamaño de la aplicación no es importante para usted, use Expo porque es fácil de implementar Map, Push más fácil que React-native pero al final del proyecto si desea publicar la aplicación en Google Play u otra tienda tiene un desafío para eliminar algunos permisos en su APK React-native, puede cambiar todo, pero para importar alguna biblioteca como la notificación push o el mapa también necesita algunos desafíos porque debe agregar estas bibliotecas manualmente para proyectos de Android e iOS
expo es una cadena de herramientas creada 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.