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 (официальная документация в целом)
Ответ Брента Ватне в порядке, но я хотел бы добавить некоторые детали.
React Native не предоставляет вам все необходимые API-интерфейсы JS, а только большинство примитивных функций. Ожидается, что разработчики React Native будут использовать Android Studio / XCode для связывания дополнительных нативных библиотек. Expo направлена на улучшение RN и предоставление всего JS API, необходимого для наиболее распространенных потребностей. В основном это набор четко определенных качественных нативных библиотек, которые уже упакованы для вас в одну библиотеку: ExpoKit. Иногда эти библиотеки уже существуют в мире RN и интегрированы в ExpoKit.
Также важно отметить, что команда Expo не может включать каждую библиотеку в 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 и React Native?
Экспо вроде как Rails для React Native. Множество вещей настроено для вас, так что быстрее начать и на правильном пути.
С Expo вам не нужен Xcode или Android Studio. Вы просто пишете JavaScript, используя любой текстовый редактор, который вам удобен (Atom, vim, emacs, Sublime, VS Code, что вам нравится). Вы можете запустить XDE (наше программное обеспечение для настольных компьютеров) на Mac, Windows и Linux.
Вот некоторые из вещей, которые Expo дает вам из коробки, которые работают сразу:
Поддержка iOS и Android
Вы можете использовать приложения, написанные в Expo, на iOS и Android прямо из коробки. Вам не нужно проходить отдельный процесс сборки для каждого. Просто откройте любое приложение Expo в приложении Expo Client из App Store на iOS или Android (или в симуляторе или эмуляторе на вашем компьютере).
Всплывающее уведомление
Push-уведомления работают прямо из коробки на iOS и Android, используя единый унифицированный API. Вам не нужно настраивать APNS и GCM / FCM или настраивать ZeroPush или что-либо подобное. Мы думаем, что сделали это настолько просто, насколько это возможно прямо сейчас.
Логин в фейсбук
Это может занять много времени, чтобы правильно настроить себя, но вы должны быть в состоянии заставить его работать через 10 минут или меньше на Экспо.
Мгновенное обновление
Все приложения Expo могут быть обновлены в считанные секунды, просто нажав «Опубликовать в XDE». Вам не нужно ничего настраивать; это просто работает таким образом. Если вы не используете Expo, вы бы либо использовали Microsoft Code Push, либо предложите свое решение для этой проблемы.
Управление активами
Изображения, видео, шрифты и т. Д. Динамически распространяются через Интернет вместе с Expo. Это означает, что они работают с мгновенным обновлением и могут быть изменены на лету. Встроенная в Expo система управления активами обеспечивает загрузку всех активов в вашем репо в CDN, чтобы они быстро загружались для всех.
Без Expo обычным делом является объединение ваших активов в ваше приложение, что означает, что вы не можете их изменить. Или вам придется управлять размещением своих активов на CDN или подобном самостоятельно.
Более простое обновление до новых версий React Native
Мы делаем новые выпуски Экспо каждые несколько недель. Вы можете использовать старую версию React Native, если хотите, или перейти на новую, не беспокоясь о перестройке бинарного файла приложения. Вы можете беспокоиться об обновлении JavaScript в свое время.
Но нет родных модулей ...
Самое ограниченное в Expo - то, что вы не можете добавлять свои собственные нативные модули, не отключая и не используя ExpoKit.
Expo XDE
консоли, либо в exp start
выводе команды консоли.
expo start
также покажет вам IP-адрес вашего локального хоста, с которого вы можете получить доступ к QR-коду
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 использует более старую версию реакции 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.