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?
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)
fuente
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 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.
Expo ofrece 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:
fuente
Se explica en la documentación oficial de la Expo.
¿Cuál es la diferencia entre Expo y React Native?
fuente
Expo XDE
consola o en laexp 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 QREXPO CLI
pros: -
Contras:-
Reaccionar Cli nativo
Pros: -
Note":- React Native cli is right approach to started work on react native framework.
Contras:-
Puede preferir cualquier enfoque según sus requisitos.
fuente
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.
fuente
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 lasios
versiones tienen un tamaño tan grande. Por ejemplo, si tiene una única página con un'Hello World'
elapk
tamaño del archivo sería de alrededor19 MB
. Tener un mismo proyecto en react-native-cli dará como resultado una aplicación con el tamaño de6 MB
.Entonces, personalmente, no recomiendo usar expo si desea desarrollar una aplicación comercial.
fuente
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
fuente
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.
fuente