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?
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)
sumber
Jawaban Brent Vatne baik-baik saja tetapi saya ingin menambahkan beberapa detail.
Expo memperluas permukaan API dari React Native
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.
Expo menyediakan pembaruan JS over-the-air
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.
Expo menyediakan klien generik
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.
Expo menyediakan layanan pembangunan
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.
Expo adalah untuk Bereaksi Asli seperti apa Phonegap bagi Cordova
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.
Kesimpulan
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:
sumber
Ini dijelaskan dalam dokumentasi resmi Expo
Apa perbedaan antara Expo dan React Native?
sumber
Expo XDE
konsol atau diexp start
output perintah konsol.CLI EXPO
pro: -
Kekurangan: -
Bereaksi Asli Cli
Pro: -
Note":- React Native cli is right approach to started work on react native framework.
Kekurangan: -
Anda dapat memilih pendekatan apa pun sesuai kebutuhan Anda.
sumber
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.
sumber
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
danios
memiliki ukuran yang besar. Misalnya jika Anda memiliki satu halaman dengan'Hello World'
satuapk
ukuran file akan menjadi sekitar19 MB
. Memiliki proyek yang sama di react-native-cli akan menghasilkan aplikasi dengan ukuran6 MB
.Jadi secara pribadi saya tidak merekomendasikan menggunakan expo jika Anda ingin mengembangkan aplikasi komersial.
sumber
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
sumber
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.
sumber