Dari situs web Expo
Expo memungkinkan pengembang web membangun aplikasi asli yang berfungsi di iOS dan Android dengan menulisnya sekali dalam hanya JavaScript.
Bukankah ini yang React Native lakukan? Apa bedanya?
Dari situs web Expo
Expo memungkinkan pengembang web membangun aplikasi asli yang berfungsi di iOS dan Android dengan menulisnya sekali dalam hanya JavaScript.
Bukankah ini yang React Native lakukan? Apa bedanya?
Jawaban:
Saya bekerja di Expo!
Ketika Anda menulis kode dalam Expo
Anda menulis React Native
kode. Expo
memiliki dua bagian utama:
1) expo-cli
: alat pengembang untuk membuat proyek, melihat log, membuka di perangkat Anda, menerbitkan, dll.
2) Expo
Klien: aplikasi di ponsel Anda yang memungkinkan Anda membuka proyek saat sedang mengerjakannya, tanpa harus melalui XCode
atau Android Studio
, dan juga memungkinkan orang lain melihatnya juga! Dan jika Anda menerbitkannya melalui expo-cli
, orang dapat mengaksesnya kapan saja melalui Expo
klien di Android atau di iOS jika masuk ke akun yang sama dengan yang dipublikasikan. Terakhir, kami juga memungkinkan untuk membangun aplikasi mandiri sehingga orang tidak perlu menggunakan Expo
klien untuk membukanya, dan Anda dapat mendistribusikan ke app store dan bermain store jika Anda mau.
Jadi, Expo
adalah seperangkat alat yang dibangun di atas / sekitar React Native
. Alat-alat ini bergantung pada satu keyakinan utama yang kami pegang Expo
: memungkinkan untuk membangun sebagian besar aplikasi tanpa perlu menulis kode asli, asalkan Anda memiliki serangkaian API yang komprehensif Javascript
.
Ini penting karena dengan React Native
Anda selalu dapat drop down ke kode asli. Terkadang hal ini sangat membantu tetapi perlu biaya: Anda perlu mengirim orang-orang binari Anda jika Anda ingin mereka mengujinya, seseorang di sisi lain dunia tidak bisa hanya mengetuk tautan untuk membukanya saat Anda sedang bekerja di atasnya dan Anda tidak bisa hanya menerbitkannya dengan satu klik untuk seseorang untuk mengaksesnya mirip dengan yang Anda lakukan di browser.
Dengan Expo
, kami sarankan Anda mencoba menghindari menjatuhkan kode asli, jika Anda bisa. Seperti yang saya sebutkan di atas, kami berpikir bahwa dengan set API yang komprehensif tersedia untuk Javascript
ini, ini seharusnya tidak diperlukan untuk sebagian besar aplikasi. Jadi, kami bertujuan untuk menyediakan set lengkap API ini, dan kemudian membangun semua tooling mengagumkan yang dapat ada di dunia di mana runtime asli dibagikan.
Namun, jika Anda harus menemukan bahwa Anda benar-benar drop down ke asli, Anda dapat menggunakan ExpoKit
untuk terus menggunakan API asli yang Expo
memberi Anda sementara memiliki tingkat kontrol yang sama seperti yang Anda lakukan di proyek asli mana pun. " ExpoKit
adalah Objective-C dan perpustakaan Java yang memungkinkan Anda untuk menggunakan Expo
platform dan Expo
proyek Anda yang ada sebagai bagian dari proyek asli standar yang lebih besar." Baca lebih lanjut di sini.
Saya mencoba melakukan ringkasan dokumentasi dan jawaban dari karyawan Expo:
Bereaksi Asli:
Keuntungan :
Kekurangan :
Expo
Keuntungan :
Kekurangan :
Saya harap saya bisa merangkum poin-poin terpenting. Silahkan menambahkan poin tambahan.
Sumber: 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 (dokumentasi resmi secara umum)
Jawaban Brent Vatne baik-baik saja tetapi saya ingin menambahkan beberapa detail.
React Native tidak memberi Anda semua API JS yang Anda butuhkan di luar kotak, tetapi hanya sebagian besar fitur primitif. Pengembang Asli Bereaksi diharapkan menggunakan Android Studio / XCode untuk menautkan pustaka asli tambahan. Expo bertujuan untuk meningkatkan RN dan menyediakan semua API JS yang Anda butuhkan untuk kebutuhan paling umum. Ini pada dasarnya adalah seperangkat lib asli berkualitas yang terdefinisi dengan baik yang telah dikemas untuk Anda dalam lib tunggal: ExpoKit. Kadang-kadang perpustakaan ini sebenarnya sudah ada di dunia RN, dan diintegrasikan ke dalam ExpoKit.
Penting juga untuk memperhatikan bahwa tim Expo tidak dapat memasukkan setiap lib di luar sana ke dalam ExpoKit (yang dapat membuat frustrasi) karena ukuran aplikasi hello world akan bertambah, karena itu akan mengirimkan banyak API yang tidak akan digunakan di sebagian besar aplikasi.
Seperti sistem lain (CodePush ...), Expo menyediakan sistem untuk memperbarui aplikasi Anda melalui udara. Ini berarti Anda mengunggah bundel JS Anda pada CDN dan aplikasi seluler akan secara otomatis mengunduh dan menggunakan JS baru pada startup berikutnya (tanpa meminta publikasi / ulasan dari toko).
Expo menyediakan alat CLI untuk mengunggah / mengelola bundel JS pada CDN mereka. Untuk pengembangan Anda juga dapat memilih untuk menjadi CDN dan meng-host bundel JS di localhost. Dan XDE hanyalah pembungkus visual pada CLI.
Klien Expo adalah klien generik yang memungkinkan memuat aplikasi apa pun yang kompatibel dengan Expo. Semua aplikasi Expo memang berbagi runtime asli yang sama persis (RN + ExpoKit), satu-satunya perbedaan adalah JS yang kami berikan kepada mereka. Aplikasi Expo yang Anda terbitkan ke toko aplikasi memiliki url bundel JS Anda yang sudah dikodekan. Klien Expo dibuat dengan cara tertentu sehingga Anda dapat memilih dari mana url untuk memuat JS, dengan memindai QRCode atau memberikan url.
Perhatikan bahwa klien ini juga dapat memuat bundel JS dari localhost, dan membuat pengalaman pengembangan Anda lebih mudah: tidak perlu untuk XCode atau Android Studio, dan itu akan jauh lebih cepat untuk menjalankan Hello World pertama Anda di telepon (dari jam ke menit). Anda benar-benar dapat berkembang di iPhone tanpa Mac dan setup membutuhkan waktu 2 menit.
Sebenarnya sebagai SDK Expo dapat ditingkatkan, klien Expo menyertakan lapisan kompatibilitas sehingga dapat menjalankan 5 versi SDK terakhir.
Karena semua aplikasi Expo berbagi kode asli yang sama, Expo dapat dengan mudah membangun aplikasi ini untuk Anda. Mereka telah menciptakan layanan cloud build.
Hal utama yang membedakan 2 aplikasi yang dibangun oleh Expo adalah hanya url yang dikodekan untuk aplikasi yang seharusnya mengunduh bundel JS untuk dijalankan.
Expo melakukan beberapa hal lain untuk Anda, seperti memberikan cara deklaratif untuk mengatur ikon aplikasi, orientasi, izin, tombol api, membantu Anda mengatur pemberitahuan push, menyediakan profil ... banyak pengaturan harus di-hardcode pada waktu pembuatan di aplikasi dan dapat dapat diubah melalui udara.
Bereaksi asli adalah Cordova serupa. Ini bukan teknologi tampilan yang sama (asli vs tampilan web) tetapi keduanya memungkinkan Anda untuk mengontrol fitur asli dari javascript, dan keduanya menawarkan sistem plugin sehingga pengembang dapat dengan mudah menambahkan ikatan JS / asli baru.
PhoneGap mirip dengan Expo. Mereka berdua mencoba untuk memperkaya API mentah dari platform yang mendasari mereka dibangun dengan seperangkat plugin asli tambahan yang telah ditetapkan. PhoneGap juga menawarkan layanan build dan memiliki klien generik yang berfungsi selama Anda menggunakan plugin yang disetujui.
Seperti yang Anda lihat, Expo adalah seperangkat alat. Pada akhirnya memungkinkan untuk dengan mudah mengembangkan, berbagi, dan menerbitkan ke toko proyek seluler Anda. Ini sangat mirip dengan pengalaman PhoneGap (tapi jauh lebih baik dan kurang membingungkan).
Saya akan merekomendasikan Expo untuk setiap proyek greenfield asli baru React, kecuali 2 kasus ini:
Ini dijelaskan dalam dokumentasi resmi Expo
Apa perbedaan antara Expo dan React Native?
Expo adalah sejenis Rails for React Native. Banyak hal telah diatur untuk Anda, jadi lebih cepat untuk memulai dan berada di jalur yang benar.
Dengan Expo, Anda tidak perlu Xcode atau Android Studio. Anda cukup menulis JavaScript menggunakan editor teks apa pun yang Anda sukai (Atom, vim, emacs, Sublime, VS Code, apa pun yang Anda suka). Anda dapat menjalankan XDE (perangkat lunak desktop kami) di Mac, Windows, dan Linux.
Berikut adalah beberapa hal yang diberikan Expo kepada Anda langsung di luar kotak:
Dukungan untuk iOS dan Android
Anda dapat menggunakan aplikasi yang ditulis dalam Expo di iOS dan Android langsung dari kotak. Anda tidak perlu melalui proses pembuatan terpisah untuk masing-masing. Cukup buka aplikasi Expo di aplikasi Expo Client dari App Store di iOS atau Android (atau di simulator atau emulator di komputer Anda).
Pemberitahuan Push
Pemberitahuan push berfungsi langsung di luar kotak di iOS dan Android, menggunakan API tunggal dan terpadu. Anda tidak perlu mengatur APNS dan GCM / FCM atau mengkonfigurasi ZeroPush atau yang seperti itu. Kami pikir kami telah membuatnya semudah mungkin sekarang.
Login Facebook
Ini bisa memakan waktu lama untuk diatur dengan benar, tetapi Anda harus bisa membuatnya bekerja dalam 10 menit atau kurang di Expo.
Pembaruan Instan
Semua aplikasi Expo dapat diperbarui dalam hitungan detik hanya dengan mengklik Terbitkan di XDE. Anda tidak perlu mengatur apa pun; hanya bekerja seperti ini. Jika Anda tidak menggunakan Expo, Anda akan menggunakan Microsoft Code Push atau roll solusi Anda sendiri untuk masalah ini
Manajemen aset
Gambar, video, font, dll. Semua didistribusikan secara dinamis melalui Internet dengan Expo. Ini berarti mereka bekerja dengan pembaruan instan dan dapat diubah dengan cepat. Sistem manajemen aset bawaan untuk Expo menangani mengunggah semua aset dalam repo Anda ke CDN sehingga mereka akan memuat dengan cepat untuk siapa pun.
Tanpa Expo, hal yang biasa dilakukan adalah menggabungkan aset Anda ke dalam aplikasi yang artinya Anda tidak bisa mengubahnya. Atau Anda harus mengelola menempatkan aset Anda di CDN atau sejenisnya sendiri.
Pembaruan Lebih Mudah Untuk Bereaksi Baru Asli Bereaksi
Kami melakukan rilis baru Expo setiap beberapa minggu. Anda dapat tetap menggunakan React Native versi lama jika Anda suka, atau meningkatkan ke versi yang baru, tanpa khawatir membangun kembali biner aplikasi Anda. Anda dapat khawatir tentang meningkatkan JavaScript pada waktu Anda sendiri.
Tapi tidak ada modul asli ...
Hal yang paling membatasi tentang Expo adalah Anda tidak dapat menambahkan modul asli Anda sendiri tanpa melepaskan dan menggunakan ExpoKit.
Expo XDE
konsol atau di exp start
output perintah konsol.
CLI EXPO
pro: -
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.
Kekurangan: -
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
Bereaksi Asli Cli
Pro: -
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.
Kekurangan: -
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.
Anda dapat memilih pendekatan apa pun sesuai kebutuhan Anda.
Saya akan membuat catatan di sini bahwa Expo menggunakan versi yang lebih lama dari reaksi 16.5 Yang akan melarang Anda menggunakan fitur kait baru. Jika Anda memutuskan untuk pergi dengan Expo, berhati-hatilah untuk menonton kontrol versi Anda. Versi yang lebih lama dari katakanlah navigasi reaksi perlu digunakan dengan versi 16.5 jika Anda mendapatkan kesalahan aneh.
expo update
melakukan pekerjaan yang cukup baik untuk mendapatkan versi yang kompatibel untuk sebagian besar paket yang dikelola oleh Expo. Sampai sekarang, saya tidak berpikir itu memperbarui Navigasi Bereaksi, tetapi perpustakaan itu sebenarnya disponsori oleh Expo. Secara pribadi, saya jarang mengalami masalah kompatibilitas antara React Navigation dan Expo (saya pikir saya mengalami beberapa masalah saat menggunakan versi beta). Namun, Anda mungkin melihat lebih banyak masalah kompatibilitas dengan paket yang tidak dikelola oleh Expo.
Jawaban tentang kelebihan dan kekurangan dari expo dan reaksi-pribumi-cli lengkap. Saya ingin menyebutkan poin lain sebagai pengalaman pribadi saya. Expo berisi banyak modul secara default di proyek dan membuatnya lebih mudah untuk bekerja dengannya. Tetapi memiliki masalah besar pada fase produksi karena versi yang dibangun android
dan ios
memiliki ukuran yang besar. Misalnya jika Anda memiliki satu halaman dengan 'Hello World'
satu apk
ukuran file akan menjadi sekitar 19 MB
. Memiliki proyek yang sama di react-native-cli akan menghasilkan aplikasi dengan ukuran 6 MB
.
Jadi secara pribadi saya tidak merekomendasikan menggunakan expo jika Anda ingin mengembangkan aplikasi komersial.
Saya sudah berpengalaman lebih dari setahun yang bekerja dengan expo. Jika Ukuran aplikasi tidak penting bagi Anda menggunakan Expo karena itu mudah untuk mengimplementasikan Peta, Dorong lebih mudah daripada Bereaksi-asli tetapi pada akhir proyek jika Anda ingin menerbitkan aplikasi di Google Play atau toko lain Anda memiliki tantangan untuk menghapus beberapa Izin di APK asli Anda, Anda dapat mengubah segalanya tetapi untuk mengimpor beberapa perpustakaan seperti pemberitahuan push atau peta memerlukan beberapa tantangan juga karena Anda harus menambahkan perpustakaan ini secara manual ke proyek android dan iOS
expo adalah toolchain yang dibangun di sekitar React Native untuk membantu Anda memulai aplikasi dengan cepat. Ini menyediakan seperangkat alat yang menyederhanakan pengembangan dan pengujian aplikasi dan antarmuka serta layanan React Native yang biasanya tersedia dalam komponen asli asli React Native pihak ketiga. Dengan Expo, Anda dapat menemukan semuanya di Expo SDK.