Подтвердить что ты не робот

В чем разница между Expo и React Native?

Из веб-сайт Экспо

Expo позволяет веб-разработчикам создавать действительно родные приложения, которые работают как с iOS, так и с Android, записывая их один раз в JavaScript.

Разве это не то, что делает React Native? Какая разница?

4b9b3361

Ответ 1

Я работаю в Экспо!

Когда вы пишете код в 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 как часть более крупного стандартного собственного проекта". Узнайте больше здесь.

Ответ 2

Я попытался сделать резюме документации и ответов сотрудников Expo:

React Native init:

Преимущества:

  • Вы можете добавить собственные модули, написанные на Java/Objective-C (возможно, единственные, но самые сильные)

Недостатки:

  • Требуется Android Studio и XCode для запуска проектов
  • Вы не можете разрабатывать iOS, не имея mac
  • Устройство должно быть подключено через USB, чтобы использовать его для тестирования
  • Шрифты необходимо импортировать вручную в XCode
  • Если вы хотите поделиться этим приложением, вам нужно отправить весь файл.apk/.ipa
  • Не предоставляет JS API из коробки, например Push-Notifications, Asset Manager, их необходимо вручную установить и связать с npm, например
  • Правильная настройка рабочего проекта (включая конфигурацию устройства) довольно сложна и может занять время

Экспо

Преимущества:

  • Настройка проекта проста и может быть выполнена за считанные минуты
  • Вы (и другие люди) можете открыть проект во время работы над ним
  • Совместное использование приложения легко (с помощью QR-кода или ссылки), вам не нужно отправлять весь файл.apk или.ipa
  • Для запуска приложения не требуется сборка
  • Интегрирует некоторые базовые библиотеки в стандартный проект (Push Notifications, Asset Manager,...)
  • Вы можете вывести его на ExpoKit и интегрировать собственный код, продолжая использовать некоторые функции Expo, но не все из них
  • Экспо может создавать файлы.apk и.ipa (распространение в магазинах возможно с помощью Expo)

Недостатки:

  • Вы не можете добавлять собственные модули (возможно, для некоторых из них - игровой процесс)
  • Вы не можете использовать библиотеки, которые используют собственный код в Objective-C/Java
  • Стандартное приложение Hello World составляет около 25 МБ (из-за интегрированных библиотек)
  • Если вы хотите использовать: FaceDetector, ARKit o Платежи, вы должны выбросить его на ExpoKit
  • Извлечение его на ExpoKit имеет компромисс функций Expo, например, вы не можете делиться с помощью QR-кода
  • Когда вы выбрасываете ExpoKit, вы ограничены реактивной версией, поддерживаемой ExpoKit в этот момент времени
  • Отладка в ExpoKit (с родными модулями) намного сложнее, так как она смешивает два языка и разные библиотеки (официальная поддержка Expo больше не существует)

Надеюсь, я мог бы подытожить самые важные моменты. Не стесняйтесь добавлять дополнительные баллы.

Источники: 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 (официальная документация в целом)

Ответ 3

Это объясняется в официальной документации Экспо

В чем разница между 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.

Ответ 4

Ответ брента Ватне хорош, но я хотел бы добавить некоторые детали.


Expo расширяет API-интерфейс React Native

React Native не предоставляет вам все необходимые API-интерфейсы JS из коробки, а предоставляет только самые примитивные функции. Ожидается, что разработчики React Native будут использовать Android Studio/XCode для связывания дополнительных нативных библиотек. Expo направлена на улучшение RN и предоставление всего JS API, необходимого для наиболее распространенных потребностей. В основном это набор четко определенных качественных нативных библиотек, которые уже упакованы для вас в одну библиотеку: ExpoKit. Иногда эти библиотеки уже существуют в мире RN и интегрированы в ExpoKit.

Также важно отметить, что команда Экспо не может включить каждую библиотеку в ExpoKit (что может вызвать некоторое разочарование), потому что размер приложения hello world будет расти, поскольку он будет поставлять много API, которые не будут использоваться в большинстве приложений.

Expo предоставляет беспроводные обновления 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-уведомлений, предоставление профилей... многие параметры должны быть жестко заданы во время сборки в приложении и могут не может быть изменено по воздуху.

Экспо - это "Реагировать на натива", как Phonegap для Кордовы

React Native похож на Cordova. Это не та же технология представления (нативная или веб-версия), но обе позволяют вам контролировать нативные функции из javascript, и обе предлагают систему плагинов, чтобы разработчики могли легко добавлять новые JS/нативные привязки.

ФИЛЬМЫ ПОХОЖИЕ НА Expo Они оба пытаются обогатить сырой API базовой платформы, на которой они построены, с помощью предопределенного набора дополнительных собственных плагинов. PhoneGap также предлагает сервис сборки и имеет универсальный клиент, который работает, пока вы используете утвержденные плагины.

Заключение

Как видите, Expo - это набор инструментов. В конце это позволяет легко разрабатывать, делиться и публиковать в магазинах ваши мобильные проекты. Это очень похоже на опыт PhoneGap (но намного лучше и менее запутанно).

Я обязательно порекомендую Экспо для любого нового проекта React Native, кроме этих двух случаев:

  • Вы уже знаете, что вам нужен API, которого нет в Expo и который скоро появится
  • Вы очень заботитесь о размере вашего приложения (HelloWorld составляет> 25 МБ из-за большого размера ExpoKit, но после этого он не сильно увеличивается, поскольку это просто JS)

Ответ 5

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.

Вы можете предпочесть любой подход в соответствии с вашими требованиями.

Ответ 6

Ответы о преимуществах и недостатках expo и response-native-cli полны. Я хочу упомянуть еще один момент в качестве моего личного опыта. Экспо по умолчанию содержит много модулей в проекте, что облегчает работу с ним. Но у него есть большая проблема на этапе производства, потому что встроенные версии android и ios имеют такой большой размер. Например, если у вас есть одна страница с 'Hello World', размер файла apk будет около 19 MB. Наличие того же проекта в Reaction-native-Cli приведет к созданию приложения размером 6 MB.

Поэтому лично я не рекомендую использовать expo, если вы хотите разработать коммерческое приложение.

Ответ 7

Я хотел бы отметить, что Expo использует более старую версию реакции 16.5, которая запрещает вам использовать новую функцию хуков. Если вы решили пойти с Экспо, будьте внимательны и следите за своими версиями контроля. Более старые версии, например, реагируют на навигацию, необходимо использовать с версией 16.5, если вы получаете странные ошибки.

Ответ 8

expo - это набор инструментов, созданный на основе React Native, чтобы помочь вам быстро запустить приложение. Он предоставляет набор инструментов, упрощающих разработку и тестирование приложения и интерфейса React Native, а также интерфейсов и сервисов, которые обычно доступны в сторонних собственных компонентах React Native. С Expo вы можете найти их все в Expo SDK.