Expo позволяет веб-разработчикам создавать действительно нативные приложения, которые работают как на iOS, так и на Android, написав их один раз только на JavaScript.
Разве это не то, что делает React Native? Какая разница?
Expo позволяет веб-разработчикам создавать действительно нативные приложения, которые работают как на iOS, так и на Android, написав их один раз только на JavaScript.
Разве это не то, что делает React Native? Какая разница?
Я работаю в Экспо!
Когда вы пишете код, Expo
вы пишете React Native
код. Expo
имеет две основные части:
1) expo-cli
: инструмент разработчика для создания проектов, просмотра журналов, открытия на вашем устройстве, публикации и т. Д.
2) Expo
Клиент: приложение на вашем телефоне, которое позволяет вам открывать свои проекты, пока вы над ними работаете, без необходимости проходить через XCode
или Android Studio
, а также позволяет другим людям просматривать их тоже! И если вы публикуете его через expo-cli
, люди могут получить к нему доступ в любое время через Expo
клиент на Android или на iOS, если вы вошли в ту же учетную запись, с которой он был опубликован. Наконец, мы также предоставляем возможность создавать автономные приложения, чтобы людям не приходилось Expo
открывать его с помощью клиента, и вы можете распространять его в магазине приложений и магазине воспроизведения, если хотите.
Итак, Expo
это набор инструментов, построенных поверх / вокруг React Native
. Эти инструменты зависят от одного ключевого убеждения, которого мы придерживаемся Expo
: большинство приложений можно создавать без необходимости написания собственного кода, при условии, что у вас есть полный набор API-интерфейсов Javascript
.
Это важно, потому что React Native
вы всегда можете перейти к нативному коду. Иногда это невероятно полезно, но это обходится дорого: вам нужно отправлять людям свои двоичные файлы, если вы хотите, чтобы они тестировали их, кто-то в другой части света не может просто нажать на ссылку, чтобы открыть ее во время работы на нем, и вы не можете просто опубликовать его одним щелчком мыши, чтобы кто-то получил к нему доступ, как в браузере.
С Expo
, мы предлагаем, чтобы попытаться избежать перехода к нативному коду, если вы можете. Как я упоминал выше, мы считаем, что при наличии полного набора API-интерфейсов Javascript
это не должно быть необходимо для большинства приложений. Итак, мы стремимся предоставить этот всеобъемлющий набор API, а затем создать все удивительные инструменты, которые могут существовать в мире, где совместно используется собственная среда выполнения.
Тем не менее, если вы обнаружите, что вы полностью переключаетесь на нативный, вы можете использовать его ExpoKit
для продолжения использования нативных API, которые Expo
дают вам тот же уровень контроля, что и в любом нативном проекте. « ExpoKit
Это библиотека Objective-C и Java, которая позволяет вам использовать Expo
платформу и ваш существующий Expo
проект как часть большого стандартного собственного проекта». Узнайте больше здесь.
Я попытался сделать резюме документации и ответов от сотрудников Экспо:
Реагировать на родной init:
Преимущества :
Недостатки :
Экспо
Преимущества :
Недостатки :
Я надеюсь, что смог бы подвести итог наиболее важных моментов. Пожалуйста, не стесняйтесь добавлять дополнительные очки.
Источники: 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 (официальная документация в целом)
источник
Ответ Брента Ватне в порядке, но я хотел бы добавить некоторые детали.
Expo расширяет API поверхность React Native
React Native не предоставляет вам все необходимые API-интерфейсы JS, а только большинство примитивных функций. Ожидается, что разработчики React Native будут использовать Android Studio / XCode для связывания дополнительных нативных библиотек. Expo направлена на улучшение RN и предоставление всего JS API, необходимого для наиболее распространенных потребностей. В основном это набор четко определенных качественных нативных библиотек, которые уже упакованы для вас в одну библиотеку: ExpoKit. Иногда эти библиотеки уже существуют в мире RN и интегрированы в ExpoKit.
Также важно отметить, что команда Expo не может включать каждую библиотеку в ExpoKit (что может вызвать некоторое разочарование), потому что размер приложения hello world будет расти, так как он будет поставлять много API, которые не будут использоваться в большинстве приложений.
Экспо предоставляет беспроводные обновления JS
Как и другие системы (CodePush ...), Expo предоставляет систему для обновления вашего приложения по беспроводной сети. Это означает, что вы загружаете свой пакет JS в CDN, и мобильные приложения автоматически загружают и используют новый JS при следующем запуске (без запроса публикации / обзора в магазинах).
Expo предоставляет инструмент CLI для загрузки / управления пакетами JS на их CDN. Для разработки вы также можете стать CDN и разместить JS-пакет на localhost. А XDE - это просто визуальная оболочка в CLI.
Expo предоставляет общего клиента
Клиент Expo - это общий клиент, который позволяет загружать любое приложение, совместимое с Expo. Все приложения Expo имеют одинаковую встроенную среду выполнения (RN + ExpoKit), единственное отличие заключается в том, что мы предоставляем им JS. Приложения Expo, которые вы публикуете в магазинах приложений, содержат в себе URL-адрес вашего пакета JS. Клиент Expo построен особым образом, так что вы можете выбрать, из какого URL загружать JS, отсканировав QRCode или предоставив URL.
Обратите внимание, что этот клиент также может загружать пакеты JS с локального хоста и упростить процесс разработки: нет необходимости в XCode или Android Studio, и он намного быстрее запускает ваш первый Hello World на телефоне (от часов до минут). Вы можете разрабатывать на iPhone без Mac, и установка занимает 2 минуты.
Фактически, так как Expo SDK можно обновить, клиент Expo включает слой совместимости, чтобы он мог запускать последние 5 версий SDK.
Экспо предоставляет услуги по сборке
Поскольку все приложения Expo имеют один и тот же собственный код, Expo может легко создать эти приложения для вас. Они создали сервис облачной сборки.
Главное, что отличает 2 приложения, созданные Expo, - это просто жестко заданный URL-адрес, по которому приложение должно загружать пакет JS для запуска.
Expo делает для вас некоторые другие вещи, такие как предоставление декларативного способа настройки значков приложений, ориентаций, разрешений, ключей API, помощь в настройке push-уведомлений, предоставление профилей ... многие параметры должны быть жестко заданы во время сборки в приложении и могут не может быть изменено по воздуху.
Экспо, чтобы Реагировать Native, что Phonegap является для Кордовы
React Native похож на Cordova. Это не та же технология представления (нативная или веб-версия), но обе позволяют управлять нативными функциями из javascript, и обе предлагают систему плагинов, так что разработчики могут легко добавлять новые JS / нативные привязки.
ФИЛЬМЫ ПОХОЖИЕ НА Expo Они оба пытаются обогатить сырой API базовой платформы, на которой они построены, с помощью предопределенного набора дополнительных собственных плагинов. PhoneGap также предлагает сервис сборки и имеет универсальный клиент, который работает, пока вы используете утвержденные плагины.
Вывод
Как видите, Expo - это набор инструментов. В конце это позволяет легко разрабатывать, делиться и публиковать в магазинах ваши мобильные проекты. Это очень похоже на опыт PhoneGap (но намного лучше и менее запутанным).
Я определенно буду рекомендовать Экспо для любого нового проекта React Native, кроме этих двух случаев:
источник
Это объясняется в официальной документации Экспо
В чем разница между Expo и React Native?
источник
Expo XDE
консоли, либо вexp start
выводе команды консоли.expo start
также покажет вам IP-адрес вашего локального хоста, с которого вы можете получить доступ к QR-кодуEXPO CLI
плюсы: -
Минусы: -
Реагируй Родной Кли
Плюсы: -
Note":- React Native cli is right approach to started work on react native framework.
Минусы: -
Вы можете предпочесть любой подход в соответствии с вашими требованиями.
источник
Я хотел бы отметить, что Expo использует более старую версию реакции 16.5, которая запрещает вам использовать новую функцию хуков. Если вы решили пойти с Экспо, будьте внимательны и следите за своими версиями контроля. Старые версии скажем, что реагируют на навигацию, нужно будет использовать с версией 16.5, если вы получаете странные ошибки.
источник
expo update
довольно хорошо работает над получением совместимых версий для большинства пакетов, управляемых Expo. На данный момент, я не думаю, что это обновляет React Navigation, но эта библиотека на самом деле спонсируется Expo. Лично я редко сталкиваюсь с проблемами совместимости между React Navigation и Expo (я думаю, что столкнулся с парой проблем при использовании бета-версий). Однако вы можете увидеть больше проблем совместимости с пакетами, не управляемыми Expo.Ответы о достоинствах и недостатках выставок и реактивов-native-cli полны. Я хочу упомянуть еще один момент в качестве моего личного опыта. Экспо по умолчанию содержит много модулей в проекте, что облегчает работу с ним. Но у него есть большая проблема на этапе производства, потому что сборка
android
иios
версии имеют такой большой размер. Для примера , если у вас есть одна страница с размер файла будет примерно . Наличие такого же проекта в Reaction-native-Cli приведет к созданию приложения с размером .'Hello World'
apk
19 MB
6 MB
Поэтому лично я не рекомендую использовать expo, если вы хотите разработать коммерческое приложение.
источник
Я уже больше года работаю с expo. Если размер приложения не важен для вас, вы используете Expo, потому что легко реализовать Map, Push проще, чем React-native, но в конце проекта, если вы хотите опубликовать В приложении Google Play или в другом магазине у вас есть задача удалить некоторые разрешения в вашем APK React-native. Вы можете изменить все, но для импорта некоторой библиотеки, например push-уведомлений или карты, тоже нужно выполнить некоторые задачи, потому что вы должны вручную добавить эти библиотеки в проекты для Android и iOS
источник
expo - это набор инструментов, созданный на основе React Native, чтобы помочь вам быстро запустить приложение. Он предоставляет набор инструментов, которые упрощают разработку и тестирование приложения и интерфейса React Native, а также интерфейсов и сервисов, которые обычно доступны в сторонних собственных компонентах React Native. С Expo вы можете найти их все в Expo SDK.
источник