Yanıtlar:
Expo'da çalışıyorum!
Kod yazdığınızda kod Expo
yazıyorsunuz React Native
. Expo
iki ana parçası vardır:
1) expo-cli
: proje oluşturmak, günlükleri görüntülemek, cihazınızda açmak, yayınlamak vb. İçin bir geliştirici aracı.
2) Expo
İstemci: Telefonunuzda, üzerinde çalışırken projelerinizi açmanıza izin vermeden XCode
veya açmanıza gerek kalmadan Android Studio
ve diğer kişilerin de onları görmesine izin veren bir uygulama! Ayrıca aracılığıyla yayınlarsanız expo-cli
, kullanıcılar Expo
, aynı hesapta oturum açmışsa Android veya iOS üzerinden istemci aracılığıyla istedikleri zaman erişebilir . Son olarak, bağımsız uygulamaları oluşturmayı da mümkün kılıyoruz, böylece insanlar Expo
istemciyi açmak için kullanmak zorunda kalmaz ve isterseniz uygulama mağazasına ve oyun mağazasına dağıtabilirsiniz.
Yani, Expo
üstte / etrafında inşa edilmiş bir dizi araç React Native
. Bu araçlar, sahip olduğumuz temel bir inanca dayanır Expo
: maruz kaldığınız kapsamlı bir API setiniz olması şartıyla, yerel kod yazmanıza gerek kalmadan çoğu uygulamayı oluşturmak mümkündür Javascript
.
Bu önemlidir, çünkü React Native
her zaman yerel koda bırakabilirsiniz. Bu bazen inanılmaz derecede faydalıdır, ancak bir maliyeti vardır: Onları test etmelerini istiyorsanız, ikili dosyalarınızı insanlara göndermeniz gerekir, dünyanın diğer tarafındaki biri çalışırken sadece bir bağlantıya dokunamaz bir tarayıcıda nasıl kullandığınıza benzer şekilde tek bir tıklama ile yayınlayamazsınız.
İle Expo
, mümkünse yerel koda bırakmaktan kaçınmanızı öneririz. Yukarıda bahsettiğim gibi, kapsamlı bir dizi API ile bunun Javascript
çoğu uygulama için gerekli olmadığını düşünüyoruz. Bu nedenle, bu kapsamlı API setini sağlamayı ve ardından yerel çalışma zamanının paylaşıldığı bir dünyada var olabilecek tüm harika araçları oluşturmayı amaçlıyoruz.
Bununla birlikte, kesinlikle ExpoKit
yerel olana geçtiğinizi tespit Expo
etmeniz gerekiyorsa, herhangi bir yerel projede olduğu gibi aynı düzeyde kontrol sahibi olmanızı sağlayan yerel API'ları kullanmaya devam etmek için kullanabilirsiniz . " ExpoKit
, Expo
platformu ve mevcut Expo
projenizi daha büyük bir standart yerel projenin parçası olarak kullanmanızı sağlayan bir Objective-C ve Java kütüphanesidir ." Daha fazlasını buradan okuyun.
Expo çalışanlarının dokümantasyon ve cevaplarının bir özetini yapmaya çalıştım:
Tepki Yerel başlatma:
Avantajları :
Dezavantajları :
Expo
Avantajları :
Dezavantajları :
Umarım en önemli noktaları özetleyebilirim. Lütfen ek puan eklemekten çekinmeyin.
Kaynaklar: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ sorunlar / 516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (genel olarak resmi belgeler)
Brent Vatne'nin cevabı iyi ama bazı detaylar eklemek istiyorum.
React Native, kutudan çıkardığınız tüm JS API'lerini değil, yalnızca en temel özellikleri sunar. React Native geliştiricilerin ek yerel kütüphaneleri bağlamak için Android Studio / XCode kullanmaları bekleniyor. Expo, RN'yi geliştirmeyi ve en yaygın ihtiyaçlar için ihtiyacınız olan tüm JS API'sini sağlamayı amaçlamaktadır. Temel olarak, sizin için zaten tek bir lib: Bazen bu kütüphaneler RN dünyasında zaten mevcuttur ve ExpoKit'e entegre edilmiştir.
Expo ekibinin orada her lib'i ExpoKit'e dahil edemeyeceğini (bazı hayal kırıklığı yaratabileceğini) da fark etmek önemlidir, çünkü merhaba dünya uygulaması boyutu büyüyecektir, çünkü kullanılmayacak çok sayıda API gönderecektir çoğu uygulamada.
Diğer sistemler (CodePush ...) gibi, Expo da uygulamanızı havadan güncellemek için bir sistem sağlar. Bu, JS paketinizi bir CDN'ye yüklediğiniz anlamına gelir ve mobil uygulamalar yeni JS'yi bir sonraki açılışta otomatik olarak indirir ve kullanır (mağazalardan yayın / inceleme talep etmeden).
Expo, CDN'lerine JS paketlerini yüklemek / yönetmek için bir CLI aracı sağlar. Geliştirme için ayrıca CDN olmayı ve JS paketini localhost üzerinde barındırmayı da seçebilirsiniz. Ve XDE sadece CLI üzerinde görsel bir sargıdır.
Expo istemcisi, Expo ile uyumlu herhangi bir uygulamayı yüklemeye izin veren genel bir istemcidir. Tüm Expo uygulamaları aynı yerel çalışma zamanını (RN + ExpoKit) paylaşır, tek fark onlara verdiğimiz JS'dir. Uygulama mağazalarında yayınladığınız Expo uygulamalarında JS paket URL'nizde kodlanmıştır. Expo istemcisi, bir QRCode tarayarak veya bir url sağlayarak JS'yi hangi url'den yükleyeceğinizi seçebilmeniz için belirli bir şekilde oluşturulur.
Bu istemcinin aynı zamanda JS paketlerini localhost'tan yükleyebileceğini ve geliştirme deneyiminizi kolaylaştırabileceğini unutmayın: XCode veya Android Studio'ya gerek yok ve ilk Hello World'ün telefonda çalışmasını (saatlerden dakikalara) çok daha hızlı hale getiriyor. Aslında Mac olmayan bir iPhone'da geliştirebilirsiniz ve kurulum 2 dakika sürer.
Aslında Expo SDK'sı yükseltilebildiğinden, Expo istemcisi son 5 SDK sürümünü çalıştırabilmesi için bir uyumluluk katmanı içerir.
Tüm Expo uygulamaları aynı yerel kodu paylaştığından, Expo bu uygulamaları sizin için kolayca oluşturabilir. Bir bulut oluşturma hizmeti oluşturdular.
Expo tarafından inşa edilen farklı 2 uygulamaların en önemli özelliği, uygulamanın çalıştırmak için JS paketini indirmesi gereken sabit kodlu URL'dir.
Expo sizin için, uygulama simgelerini, yönlerini, izinlerini, api anahtarlarını ayarlamak için bildirici bir yol sağlamak, push bildirimlerini ayarlamanıza yardımcı olmak, profilleri sağlamak için başka şeyler yapar ... birçok ayarın uygulamada derleme sırasında kodlanması gerekir. havadan değiştirilemez.
React Native benzer Cordova. Aynı görünüm teknolojisi değil (yerel veya webview), ancak her ikisi de yerel özellikleri javascript'ten kontrol etmenizi sağlar ve her ikisi de bir eklenti sistemi sunar, böylece geliştiriciler kolayca yeni JS / yerel bağlamalar ekleyebilir.
PhoneGap, Expo'ya benzer. Her ikisi de üzerine inşa edildikleri temel platformun ham API'sini önceden tanımlanmış ek yerel eklentilerle zenginleştirmeye çalışırlar. PhoneGap ayrıca sunan yapım servisine ve sahip jenerik müşteri zamandır onaylı eklentileri kullanabilirsiniz kadar işin söyledi.
Gördüğünüz gibi, Expo bir dizi araç. Sonunda, mobil projelerinizi kolayca geliştirmenize, paylaşmanıza ve mağazalarınızda yayınlamanıza izin verir. PhoneGap deneyimine oldukça benzer (ancak çok daha iyi ve daha az kafa karıştırıcı).
Bu 2 durum haricinde Expo'yu yeni React Native yeşil alan projesi için kesinlikle tavsiye edeceğim:
Resmi Expo belgelerinde açıklanmıştır
Expo ve React Native arasındaki fark nedir?
Expo, React Native için Rails gibidir. Sizin için birçok şey ayarlanmıştır, bu yüzden başlamak ve doğru yolda daha hızlıdır.
Expo ile Xcode veya Android Studio'ya ihtiyacınız yok. İstediğiniz metin düzenleyiciyi (Atom, vim, emacs, Sublime, VS Code, ne isterseniz) kullanarak JavaScript yazmanız yeterlidir. Mac, Windows ve Linux'ta XDE (masaüstü yazılımımız) çalıştırabilirsiniz.
İşte Expo'nun hemen işe yaradığı şeylerden bazıları:
İOS ve Android desteği
Expo'da yazılmış uygulamaları hem iOS hem de Android'de kutudan çıkar çıkmaz kullanabilirsiniz. Her biri için ayrı bir oluşturma sürecinden geçmeniz gerekmez. İOS veya Android'de (veya bilgisayarınızdaki bir simülatörde veya emülatörde) App Store'dan Expo Client uygulamasındaki herhangi bir Expo uygulamasını açmanız yeterlidir.
Push bildirimleri
Anlık bildirimler, tek bir birleştirilmiş API kullanarak hem iOS hem de Android'de kutudan çıkar çıkmaz çalışır. APNS ve GCM / FCM kurmanız veya ZeroPush veya bunun gibi bir şeyi yapılandırmanız gerekmez. Bunu şu anda olabildiğince kolay hale getirdiğimizi düşünüyoruz.
Facebook Girişi
Bu, kendiniz düzgün bir şekilde kurmak için uzun zaman alabilir, ancak Expo'da 10 dakika veya daha kısa sürede çalışmasını sağlayabilirsiniz.
Anında Güncelleme
Tüm Expo uygulamaları yalnızca XDE'de Yayınla'yı tıklayarak birkaç saniyede güncellenebilir. Hiçbir şey yapmanız gerekmiyor; sadece bu şekilde çalışır. Expo kullanmıyorsanız, Microsoft Code Push'u kullanır veya bu sorun için kendi çözümünüzü kullanırsınız
Varlık Yönetimi
Resimler, videolar, yazı tipleri vb., Expo ile İnternet üzerinden dinamik olarak dağıtılır. Bu, anında güncelleme ile çalıştıkları ve anında değiştirilebileceği anlamına gelir. Expo'da yerleşik varlık yönetim sistemi, repodaki tüm varlıkları bir CDN'ye yüklemeyle ilgilenir, böylece herkes için hızlı bir şekilde yüklenir.
Expo olmadan yapılacak normal şey, varlıklarınızı uygulamanızda bir araya getirmektir. Bu, onları değiştiremeyeceğiniz anlamına gelir. Veya öğelerinizi bir CDN veya benzeri bir öğeye koymayı yönetmeniz gerekir.
Yeni Tepki Yerel Sürümlerine Daha Kolay Güncelleme
Birkaç haftada bir yeni Expo sürümleri yapıyoruz. İsterseniz React Native'in eski bir sürümünde kalabilir veya uygulamanızın ikili dosyasını yeniden oluşturmak konusunda endişelenmeden yenisine yükseltebilirsiniz. JavaScript'i istediğiniz zaman yeni sürüme geçirme konusunda endişelenebilirsiniz.
Ancak yerel modüller yok…
Expo ile ilgili en sınırlayıcı şey, ExpoKit'i ayırmadan ve kullanmadan kendi yerel modüllerinizi ekleyememenizdir.
Expo XDE
konsolda veya exp start
konsol komut çıkışında otomatik olarak oluşturulur .
expo start
ayrıca yerel ana makinenizde QR koduna erişebileceğiniz bir ip adresi gösterecektir
EXPO CLI
artıları: -
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.
Eksileri:-
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
Yerel Klibi Yanıtla
Artıları: -
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.
Eksileri:-
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.
İhtiyaçlarınıza göre herhangi bir yaklaşımı tercih edebilirsiniz.
Burada, Expo'nun yeni kanca özelliğini kullanmanıza izin vermeyen 16.5 reaksiyonunun eski bir sürümünü kullandığını not edeceğim. Expo ile gitmeye karar verirseniz, sürüm kontrollerinizi izlemeye dikkat edin. Tuhaf hatalar alıyorsanız, say reaktif navigasyonun eski sürümlerinin 16.5 sürümü ile kullanılması gerekecektir.
expo update
Expo tarafından yönetilen paketlerin çoğu için uyumlu sürümleri almak oldukça iyi bir iş çıkarıyor. Şu an itibariyle React Navigation'ı güncellediğini düşünmüyorum, ancak bu kütüphane aslında Expo tarafından destekleniyor. Şahsen, React Navigation ve Expo arasında nadiren uyumluluk sorunları ile karşılaşıyorum (beta sürümlerini kullanırken birkaç sorunla karşılaştım). Ancak, Expo tarafından yönetilmeyen paketlerle ilgili daha fazla uyumluluk sorunu görebilirsiniz.
Fuar ve tepki-doğal-klibin avantajları ve dezavantajları hakkındaki cevaplar eksiksizdir. Kişisel deneyimim olarak başka bir noktaya değinmek istiyorum. Expo, projede varsayılan olarak birçok modül içerir ve onunla çalışmayı kolaylaştırır. Ancak üretim aşamasında büyük bir problem var çünkü inşa edilmiş android
ve ios
versiyonlar çok büyük bir boyuta sahip. Örnek için bir ile tek bir sayfa varsa dosya boyutu yaklaşık olurdu . Reat-native-cli'da aynı projeye sahip olmak, boyutu olan bir uygulama ile sonuçlanacaktır .'Hello World'
apk
19 MB
6 MB
Şahsen ben ticari bir uygulama geliştirmek istiyorsanız expo kullanmanızı önermiyoruz.
Expo ile çalışan bir yıldan fazla bir süredir yaşadım Uygulamanın boyutu Expo'yu kullanmanız için önemli değilse, Harita'yı uygulamak kolaydır, React-native'den daha kolay itin, ancak yayınlamak istiyorsanız projenin sonunda Google Play veya başka bir mağazadaki uygulama APK React-native'deki bazı İzinleri kaldırmak için bir zorluğunuz var.Her şeyi değiştirebilirsiniz, ancak push bildirimi veya harita gibi bazı kütüphaneleri içe aktarmak için de bu kütüphaneleri manuel olarak eklemeniz gerekir. android ve iOS projeleri
expo, bir uygulamayı hızlı bir şekilde başlatmanıza yardımcı olmak için React Native etrafında oluşturulmuş bir araç zinciridir. React Native uygulamasının ve arabiriminin ve genellikle üçüncü taraf yerel React Native bileşenlerinde bulunan hizmetlerin geliştirilmesini ve test edilmesini kolaylaştıran bir dizi araç sağlar. Expo ile hepsini Expo SDK'da bulabilirsiniz.