Експо дозволяє веб-розробникам створювати справді власні програми, які працюють на обох iOS та Android, записуючи їх один раз у просто JavaScript.
Хіба це не те, що робить React Native? Яка різниця?
Експо дозволяє веб-розробникам створювати справді власні програми, які працюють на обох iOS та Android, записуючи їх один раз у просто JavaScript.
Хіба це не те, що робить React Native? Яка різниця?
Відповіді:
Я працюю на Expo!
Коли ви пишете код, 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
проект як частину більшого стандартного нативного проекту." Детальніше читайте тут.
Я спробував зробити короткий опис документації та відповіді від співробітників Expo:
Реагуйте на рідну ініціативу:
Переваги :
Недоліки :
Експо
Переваги :
Недоліки :
Сподіваюся, я зміг би підбити найважливіші моменти. Будь ласка, не соромтесь додавати додаткові бали.
Джерела: 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 та забезпечити всі необхідні API JS для найпоширеніших потреб. Це в основному набір чітко визначених якісних нативних ліфтів, які вже упаковані для вас в один ліб: ExpoKit. Іноді ці бібліотеки насправді вже існують у світі RN та інтегруються в ExpoKit.
Також важливо зауважити, що команда Expo не може включати кожну конфігурацію там у ExpoKit (що може спричинити певні розлади), оскільки розмір привітного світового додатка зростатиме, оскільки він доставлятиме багато 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 з localhost і полегшити ваш досвід розробки: немає потреби в XCode або Android Studio, і він стає набагато швидшим, щоб ваш перший Hello World працював по телефону (від годин до хвилин). На iPhone можна фактично розвиватися без Mac, а налаштування займає 2 хвилини.
Насправді, як пакет SDK Expo можна оновити, клієнт Expo включає рівень сумісності, щоб він міг запускати останні 5 версій SDK.
Оскільки всі програми Expo мають однаковий кодовий код, Expo здатний легко створити ці програми для вас. Вони створили хмарну службу побудови.
Головне, що відрізняє 2 програми, побудовані Expo, - це лише жорсткий код URL, на який додаток повинен завантажити пакет JS для запуску.
Expo робить для вас деякі інші речі, такі як надання декларативного способу настройки значків додатків, орієнтацій, дозволів, клавіш api, допомагає налаштувати натискання сповіщень, надання профілів ... багато налаштувань повинні бути жорстко кодовані під час створення програми в додатку і можуть не можна міняти по повітрю.
React Native схожий на Кордову. Це не одна і та сама технологія перегляду (native vs webview), але обидві дозволяють керувати нативними функціями через JavaScript, і обидві пропонують систему плагінів, щоб розробники могли легко додавати нові JS / нативні прив’язки.
PhoneGap схожий на Expo. Вони обидва намагаються збагатити необроблений API базової платформи, на якій вони побудовані, заздалегідь визначеним набором додаткових нативних плагінів. PhoneGap також пропонує послугу побудови та має загального клієнта, який працює до тих пір, поки ви використовуєте затверджені плагіни.
Як бачите, Expo - це набір інструментів. Зрештою, це дозволяє легко розробляти, ділитися та публікувати в магазинах ваші мобільні проекти. Він досить схожий на досвід PhoneGap (але набагато кращий і менш заплутаний).
Я остаточно порекомендую Expo для будь-якого нового проекту React Native Greenfield, за винятком цих 2 випадків:
Це пояснюється в офіційній документації Expo
Чим відрізняється Expo від React Native?
Експо такий собі, як Рейки для 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 з App Store на iOS або Android (або в тренажері чи емуляторі на комп’ютері).
Натисніть сповіщення
Натискання сповіщень працює прямо з iOS та Android, використовуючи єдиний об'єднаний API. Вам не потрібно налаштовувати APNS та GCM / FCM чи налаштовувати ZeroPush чи щось подібне. Ми думаємо, що ми зробили це так просто, як це можливо зараз.
Логін Фейсбук
Щоб правильно налаштуватись, це може зайняти багато часу, але ви повинні мати можливість працювати на Expo за 10 хвилин або менше.
Миттєве оновлення
Усі програми Expo можна оновити за лічені секунди, натиснувши Опублікувати в XDE. Вам нічого не потрібно налаштовувати; це просто працює таким чином. Якщо ви не використовуєте Expo, ви або використовуєте Microsoft Code Push, або перекачуйте власне рішення для цієї проблеми
Управління активами
Зображення, відео, шрифти тощо динамічно розподіляються через Інтернет за допомогою Expo. Це означає, що вони працюють з миттєвим оновленням і можуть бути змінені на ходу. Система управління активами, вбудована в Expo, піклується про завантаження всіх активів у вашому РЕПО на CDN, щоб вони швидко завантажувалися для всіх.
Без Expo, звичайне, що потрібно зробити - це зв'язати свої активи у свою програму, а це означає, що ви не можете їх змінити. Або вам доведеться самостійно керувати розміщенням своїх активів на CDN або подібному.
Легше оновлення до нових випусків програми "Реактивне життя"
Ми робимо нові випуски Expo кожні кілька тижнів. Якщо ви хочете, ви можете залишитися на старій версії 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, яка б заборонила вам використовувати нову функцію гачків. Якщо ви вирішили перейти на Expo, пам’ятайте, що слідкуйте за контролем своєї версії. Старіші версії скажімо, реакція-навігація потребує використання версії 16.5, якщо ви отримуєте дивні помилки.
expo update
робить досить непогану роботу з отримання сумісних версій для більшості пакетів, якими керує Expo. На даний момент я не думаю, що він оновлює React Navigation, але ця бібліотека насправді спонсорується Expo. Особисто я рідко стикаюся з питаннями сумісності між React Navigation та Expo (я думаю, що під час використання бета-версій я стикався з декількома проблемами). Однак ви можете побачити більше проблем сумісності з пакетами, якими не керує Expo.
Відповіді про переваги та недоліки expo та react-native-cli є повними. Хочу згадати ще один момент як свій особистий досвід. Expo містить багато модулів за замовчуванням у проекті, і це полегшує роботу з ним. Але це має велику проблему на етапі виробництва, оскільки вбудовані android
та ios
версії мають такі великі розміри. Для прикладу , якщо у вас є одна сторінка з розмір файлу буде приблизно . Якщо такий самий проект буде реагувати на native-cli-cli, це призведе до програми з розміром .'Hello World'
apk
19 MB
6 MB
Тому особисто я не рекомендую використовувати expo, якщо ви хочете розробити комерційний додаток.
Я вже більше року працював із експо-версією. Якщо розмір програми не важливий для вас, використовуйте Expo, оскільки це легко реалізувати Map, натисніть простіше, ніж React-native, але в кінці проекту, якщо ви хочете опублікувати додаток в Google Play або іншому магазині, у вас є завдання видалити деякий дозвіл у рідній версії APK React, ви можете змінити все, окрім імпорту певної бібліотеки, наприклад, натискання сповіщень, або карта також потребує певних проблем, оскільки вам потрібно додати ці бібліотеки вручну проекти Android та iOS
expo - це ланцюжок інструментів, створена навколо React Native, яка допоможе вам швидко запустити додаток. Він пропонує набір інструментів, які спрощують розробку та тестування програми та інтерфейсу та сервісів React Native, які зазвичай доступні в сторонніх компонентах React Native. З Expo ви можете їх знайти в SDK Expo.