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

React Native предоставляет два способа создания проекта.

Первый:

npm install -g expo-cli

Во-вторых:

npm install -g react-native-cli

так что же различается между ними и что следует использовать, если мы создаем реагирующее нативное приложение?

1 ответ

Реагировать на родной init:

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

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

Недостатки:

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

Экспо:

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

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

Недостатки:

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

И вы можете использовать любой, который соответствует вашим требованиям приложений

Другие вопросы по тегам