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
, что можете ExpoKit
к ExpoKit
, вы можете использовать ExpoKit
чтобы продолжать использовать нативные API-интерфейсы, которые предоставляет вам Expo
, в то же время имея тот же уровень контроля, что и в любом нативном проекте. " ExpoKit
- это библиотека Objective-C и Java, которая позволяет вам использовать платформу Expo
и ваш существующий проект Expo
как часть более крупного стандартного собственного проекта". Узнайте больше здесь.
Я попытался сделать резюме документации и ответов сотрудников Expo:
React Native init:
Преимущества:
Недостатки:
Экспо
Преимущества:
Недостатки:
Надеюсь, я мог бы подытожить самые важные моменты. Не стесняйтесь добавлять дополнительные баллы.
Источники: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/выпуски /516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (официальная документация в целом)
Это объясняется в официальной документации Экспо
В чем разница между Expo и React Native?
Экспо вроде как Rails для React Native. Для вас настроено множество вещей, поэтому быстрее приступить к работе и выбрать правильный путь.
С Expo вам не нужен Xcode или Android Studio. Вы просто пишете JavaScript, используя любой текстовый редактор, который вам удобен (Atom, vim, emacs, Sublime, VS Code, что вам нравится). Вы можете запустить XDE (наше программное обеспечение для настольных компьютеров) на Mac, Windows и Linux.
Вот некоторые из вещей, которые Expo дает вам из коробки, которые работают сразу:
Support for iOS и Android
Вы можете использовать приложения, написанные в Expo, на iOS и Android прямо из коробки. Вам не нужно проходить отдельный процесс сборки для каждого. Просто откройте любое приложение Expo в приложении Expo Client из App Store на iOS или Android (или в симуляторе или эмуляторе на вашем компьютере).
Push Notifications
Push-уведомления работают сразу из коробки на iOS и Android, используя единый унифицированный API. Вам не нужно настраивать APNS и GCM/FCM или настраивать ZeroPush или что-либо подобное. Мы думаем, что сделали это настолько просто, насколько это возможно прямо сейчас.
Facebook Login
Это может занять много времени для правильной настройки самостоятельно, но вы должны быть в состоянии настроить его в течение 10 минут или меньше на Expo.
Instant Updating
Все приложения Expo можно обновить за считанные секунды, просто щелкнув Опубликовать в XDE. Вам не нужно ничего настраивать; это просто работает таким образом. Если вы не используете Expo, вы можете использовать Microsoft Code Push или предложить собственное решение этой проблемы
Asset Management
Изображения, видео, шрифты и т.д. динамически распространяются через Интернет вместе с Expo. Это означает, что они работают с мгновенным обновлением и могут быть изменены на лету. Встроенная в Expo система управления активами обеспечивает загрузку всех активов в вашем репо в CDN, чтобы они быстро загружались для всех.
Без Expo обычным делом является объединение ваших активов в ваше приложение, что означает, что вы не можете их изменить. Или вам нужно самим разместить свои активы в CDN или аналогичном.
Упрощенное обновление до новых собственных версий React
Мы делаем новые выпуски Экспо каждые несколько недель. Вы можете использовать старую версию React Native, если хотите, или перейти на новую, не беспокоясь о перестройке бинарного файла приложения. Вы можете беспокоиться об обновлении JavaScript в свое время.
But no native modules…
Самое ограниченное в Expo - это то, что вы не можете добавлять свои собственные нативные модули, не отключая и не используя ExpoKit.
Ответ брента Ватне хорош, но я хотел бы добавить некоторые детали.
React Native не предоставляет вам все необходимые API-интерфейсы JS из коробки, а предоставляет только самые примитивные функции. Ожидается, что разработчики React Native будут использовать Android Studio/XCode для связывания дополнительных нативных библиотек. Expo направлена на улучшение RN и предоставление всего JS API, необходимого для наиболее распространенных потребностей. В основном это набор четко определенных качественных нативных библиотек, которые уже упакованы для вас в одну библиотеку: ExpoKit. Иногда эти библиотеки уже существуют в мире RN и интегрированы в ExpoKit.
Также важно отметить, что команда Экспо не может включить каждую библиотеку в ExpoKit (что может вызвать некоторое разочарование), потому что размер приложения hello world будет расти, поскольку он будет поставлять много API, которые не будут использоваться в большинстве приложений.
Как и другие системы (CodePush...), Expo предоставляет систему для обновления вашего приложения по беспроводной сети. Это означает, что вы загружаете свой пакет JS в CDN, и мобильные приложения автоматически загружают и используют новый JS при следующем запуске (без запроса публикации/обзора в магазинах).
Expo предоставляет инструмент CLI для загрузки/управления пакетами JS на их CDN. Для разработки вы также можете стать CDN и разместить JS-пакет на localhost. А XDE - это просто визуальная оболочка для CLI.
Клиент 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-уведомлений, предоставление профилей... многие параметры должны быть жестко заданы во время сборки в приложении и могут не может быть изменено по воздуху.
React Native похож на Cordova. Это не та же технология представления (нативная или веб-версия), но обе позволяют вам контролировать нативные функции из javascript, и обе предлагают систему плагинов, чтобы разработчики могли легко добавлять новые JS/нативные привязки.
ФИЛЬМЫ ПОХОЖИЕ НА Expo Они оба пытаются обогатить сырой API базовой платформы, на которой они построены, с помощью предопределенного набора дополнительных собственных плагинов. PhoneGap также предлагает сервис сборки и имеет универсальный клиент, который работает, пока вы используете утвержденные плагины.
Как видите, Expo - это набор инструментов. В конце это позволяет легко разрабатывать, делиться и публиковать в магазинах ваши мобильные проекты. Это очень похоже на опыт PhoneGap (но намного лучше и менее запутанно).
Я обязательно порекомендую Экспо для любого нового проекта React Native, кроме этих двух случаев:
EXPO CLI
Плюсы: -
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.
Минусы: -
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
Реагируй на родной клиент
Плюсы: -
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.
Минусы: -
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.
Вы можете предпочесть любой подход в соответствии с вашими требованиями.
Ответы о преимуществах и недостатках expo и response-native-cli полны. Я хочу упомянуть еще один момент в качестве моего личного опыта. Экспо по умолчанию содержит много модулей в проекте, что облегчает работу с ним. Но у него есть большая проблема на этапе производства, потому что встроенные версии android
и ios
имеют такой большой размер. Например, если у вас есть одна страница с 'Hello World'
, размер файла apk
будет около 19 MB
. Наличие того же проекта в Reaction-native-Cli приведет к созданию приложения размером 6 MB
.
Поэтому лично я не рекомендую использовать expo, если вы хотите разработать коммерческое приложение.
Я хотел бы отметить, что Expo использует более старую версию реакции 16.5, которая запрещает вам использовать новую функцию хуков. Если вы решили пойти с Экспо, будьте внимательны и следите за своими версиями контроля. Более старые версии, например, реагируют на навигацию, необходимо использовать с версией 16.5, если вы получаете странные ошибки.
expo - это набор инструментов, созданный на основе React Native, чтобы помочь вам быстро запустить приложение. Он предоставляет набор инструментов, упрощающих разработку и тестирование приложения и интерфейса React Native, а также интерфейсов и сервисов, которые обычно доступны в сторонних собственных компонентах React Native. С Expo вы можете найти их все в Expo SDK.