एक्सपो वेब डेवलपर्स को सही मायने में देशी ऐप बनाने की सुविधा देता है जो आईओएस और एंड्रॉइड दोनों पर काम करते हैं, केवल एक बार जावास्क्रिप्ट में लिखकर।
यह क्या प्रतिक्रिया मूल निवासी नहीं है? क्या फर्क पड़ता है?
एक्सपो वेब डेवलपर्स को सही मायने में देशी ऐप बनाने की सुविधा देता है जो आईओएस और एंड्रॉइड दोनों पर काम करते हैं, केवल एक बार जावास्क्रिप्ट में लिखकर।
यह क्या प्रतिक्रिया मूल निवासी नहीं है? क्या फर्क पड़ता है?
जवाबों:
मैं एक्सपो में काम करता हूँ!
जब आप कोड लिखते हैं तो आप कोड Expo
लिखते हैं React Native
। Expo
दो मुख्य टुकड़े हैं:
1) expo-cli
: प्रोजेक्ट बनाने, लॉग देखने, अपने डिवाइस को खोलने, प्रकाशन आदि के लिए एक डेवलपर टूल।
2) Expo
ग्राहक: आपके फोन पर एक ऐप जो आपको अपने प्रोजेक्ट्स को खोलने की सुविधा देता है, जबकि आप उन पर काम कर रहे हैं, बिना किसी के माध्यम से जाने के लिए , XCode
या Android Studio
अन्य लोगों को भी उन्हें देखने देता है! और यदि आप इसे प्रकाशित करते हैं expo-cli
, तो लोग इसे किसी भी समय Expo
एंड्रॉइड या आईओएस पर क्लाइंट के माध्यम से एक्सेस कर सकते हैं यदि उसी खाते पर हस्ताक्षर किए गए हैं जिसके साथ इसे प्रकाशित किया गया था। अंत में, हम स्टैंडअलोन ऐप बनाना भी संभव बनाते हैं ताकि लोगों Expo
को इसे खोलने के लिए क्लाइंट का उपयोग न करना पड़े , और यदि आपको पसंद हो तो आप ऐप स्टोर और प्ले स्टोर पर वितरित कर सकते हैं।
तो, Expo
उपकरण का एक सेट है जो ऊपर / आस-पास बनाया गया है React Native
। ये उपकरण एक प्रमुख विश्वास पर निर्भर करते हैं जिसे हम पकड़ते हैं Expo
: मूल कोड लिखने के लिए कभी भी आवश्यकता के बिना अधिकांश एप्लिकेशन बनाने के लिए संभव है, बशर्ते आपके पास एपीआई का एक व्यापक सेट है Javascript
।
यह महत्वपूर्ण है क्योंकि React Native
आप हमेशा देशी कोड को छोड़ सकते हैं। यह कभी-कभी अविश्वसनीय रूप से सहायक होता है, लेकिन यह एक लागत पर आता है: आपको लोगों को अपने बायनेरिज़ भेजने की ज़रूरत है यदि आप उन्हें परीक्षण करना चाहते हैं, तो दुनिया के दूसरी तरफ कोई व्यक्ति केवल काम करने के दौरान इसे खोलने के लिए लिंक को टैप नहीं कर सकता है उस पर और आप इसे किसी ऐसे व्यक्ति के लिए एक क्लिक के साथ प्रकाशित नहीं कर सकते, जैसे आप किसी ब्राउज़र में कैसे करेंगे।
इसके साथ Expo
, हमारा सुझाव है कि यदि आप कर सकते हैं तो मूल कोड को छोड़ने से बचने का प्रयास करें। जैसा कि मैंने ऊपर उल्लेख किया है, हमें लगता है कि उपलब्ध एपीआई के व्यापक सेट के साथ Javascript
, यह अधिकांश ऐप्स के लिए आवश्यक नहीं होना चाहिए। इसलिए, हम एपीआई के इस व्यापक सेट को प्रदान करने का लक्ष्य रखते हैं, और फिर सभी भयानक टूलिंग का निर्माण करते हैं जो एक ऐसी दुनिया में मौजूद हो सकते हैं जहां देशी रनटाइम साझा किया जाता है।
हालाँकि, यदि आपको यह पता होना चाहिए कि आप मूल रूप से नीचे जा रहे हैं, तो आप ExpoKit
मूल एपीआई का उपयोग जारी रखने के लिए उपयोग कर सकते हैं जो Expo
आपको किसी भी मूल परियोजना में होने वाले नियंत्रण के समान स्तर प्रदान करता है। " ExpoKit
एक उद्देश्य-सी और जावा पुस्तकालय है जो आपको एक बड़े मानक देशी परियोजना के हिस्से के रूप में Expo
मंच और आपकी मौजूदा Expo
परियोजना का उपयोग करने की अनुमति देता है।" यहाँ और पढ़ें
मैंने एक्सपो कर्मचारियों से प्रलेखन और उत्तरों का सारांश करने की कोशिश की:
प्रतिक्रिया मूलक init:
लाभ :
नुकसान :
एक्सपो
लाभ :
नुकसान :
मुझे उम्मीद है कि मैं सबसे महत्वपूर्ण बिंदुओं को जोड़ सकता हूं। कृपया अतिरिक्त अंक जोड़ने के लिए स्वतंत्र महसूस करें।
स्रोत: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-congets--cms-30661 https://github.com/react-community/create-react-appative-app/ मुद्दों / 516 # जारी करने -373629114 https://docs.expo.io/versions/latest/guides/detach.html (सामान्य रूप में आधिकारिक दस्तावेज)
ब्रेंट वेटेन का उत्तर ठीक है, लेकिन मैं कुछ विवरण जोड़ना चाहूंगा।
प्रतिक्रिया मूल निवासी आपको सभी जेएस एपीआई आपको बॉक्स से बाहर की जरूरत नहीं देता है, लेकिन केवल सबसे आदिम विशेषताएं हैं। रिएक्ट नेटिव डेवलपर्स को अतिरिक्त देशी पुस्तकालयों को जोड़ने के लिए एंड्रॉइड स्टूडियो / एक्सकोड का उपयोग करने की उम्मीद है। एक्सपो का उद्देश्य आरएन को बढ़ाना और सभी सामान्य आवश्यकताओं के लिए आपको सभी जेएस एपीआई प्रदान करना है। यह मूल रूप से अच्छी तरह से परिभाषित गुणवत्ता वाले देशी परिवादों का एक समूह है जो पहले से ही आपके लिए एक ही लिबास में पैक किया गया है: एक्सपोजिट। कभी-कभी ये पुस्तकालय वास्तव में पहले से ही आरएन दुनिया में मौजूद हैं, और एक्सपोइट में एकीकृत हैं।
यह भी ध्यान रखना महत्वपूर्ण है कि एक्सपो टीम एक्सपोकिट (जो कुछ हताशा पैदा कर सकती है) में हर काम को शामिल नहीं कर सकती है क्योंकि हैलो वर्ल्ड ऐप का आकार बढ़ेगा, क्योंकि यह बहुत सारे एपीआई को शिप करेगा जिसका उपयोग नहीं किया जाएगा अधिकांश ऐप्स में।
अन्य प्रणालियों (CodePush ...) की तरह, एक्सपो आपके ऐप को हवा में अपडेट करने के लिए एक सिस्टम प्रदान करता है। इसका मतलब है कि आप अपने जेएस बंडल को सीडीएन पर अपलोड करते हैं और मोबाइल एप्लिकेशन स्वचालित रूप से नए जेएस को अगले स्टार्टअप पर (स्टोरों से प्रकाशन / समीक्षा का अनुरोध किए बिना) डाउनलोड और उपयोग करेंगे।
एक्सपो अपने CDN पर JS बंडलों को अपलोड / प्रबंधित करने के लिए एक CLI टूल प्रदान करता है। विकास के लिए आप सीडीएन बनने का विकल्प चुन सकते हैं और जेएस बंडल को लोकलहोस्ट पर होस्ट कर सकते हैं। और XDE CLI पर सिर्फ एक दृश्य आवरण है।
एक्सपो क्लाइंट एक सामान्य क्लाइंट है जो एक्सपो के साथ संगत किसी भी ऐप को लोड करने की अनुमति देता है। सभी एक्सपो ऐप ठीक उसी मूल रनटाइम (आरएन + एक्सपोइट) को साझा करते हैं, एकमात्र अंतर जेएस है जो हम उन्हें देते हैं। एक्सपो ऐप जो आप ऐप स्टोर पर प्रकाशित करते हैं, उसमें आपका JS बंडल url हार्डकोड होता है। एक्सपो क्लाइंट एक विशिष्ट तरीके से बनाया जाता है ताकि आप यह चुन सकें कि किस यूआरएल से जेएस लोड करना है, क्यूआरकोड स्कैन करके या एक यूआरएल प्रदान करें।
ध्यान दें कि यह क्लाइंट लोकलहोस्ट से जेएस बंडलों को भी लोड कर सकता है, और आपके विकास के अनुभव को आसान बना सकता है: एक्सकोड या एंड्रॉइड स्टूडियो की कोई आवश्यकता नहीं है, और फोन पर अपनी पहली हैलो वर्ल्ड को चलाने के लिए यह बहुत तेज़ हो जाता है (घंटों से मिनट तक)। आप वास्तव में मैक के बिना एक iPhone पर विकसित कर सकते हैं और सेटअप में 2 मिनट लगते हैं।
वास्तव में चूंकि एक्सपो एसडीके को अपग्रेड किया जा सकता है, एक्सपो क्लाइंट में एक संगतता परत शामिल है ताकि यह पिछले 5 एसडीके संस्करणों को चलाने में सक्षम हो।
जैसा कि सभी एक्सपो ऐप एक ही मूल कोड साझा करते हैं, एक्सपो आपके लिए इन ऐप को आसानी से बनाने में सक्षम है। उन्होंने क्लाउड बिल्ड सर्विस बनाई है।
एक्सपो द्वारा निर्मित 2 ऐप्स में अंतर करने वाली प्रमुख बात सिर्फ हार्डकोडेड यूआरएल है, जिसे चलाने के लिए ऐप को जेएस बंडल डाउनलोड करना चाहिए।
एक्सपो आपके लिए कुछ अन्य काम करता है, जैसे कि ऐप आइकन, ओरिएंटेशन, परमिशन, एपि कीज़ को सेटअप करने के लिए एक डिक्लेक्टिव रास्ता प्रदान करना, आपको सेटअप पुश नोटिफिकेशन की मदद करना, प्रोफाइल प्रोविजन करना ... ऐप में बिल्ड टाइम पर कई सेटिंग्स को हार्डकोड किया जा सकता है और कर सकते हैं 'हवा के ऊपर नहीं बदला जा सकता।
रिएक्ट नेटिव कोर्डोवा जैसा ही है। यह एक ही दृश्य तकनीक (देशी बनाम वेबव्यू) नहीं है, लेकिन दोनों आपको जावास्क्रिप्ट से देशी सुविधाओं को नियंत्रित करने की अनुमति देते हैं, और दोनों एक प्लगइन प्रणाली प्रदान करते हैं ताकि डेवलपर्स आसानी से नए जेएस / देशी बाइंडिंग जोड़ सकें।
PhoneGap एक्सपो के समान है। वे दोनों उन अंतर्निहित प्लेटफ़ॉर्म के कच्चे एपीआई को समृद्ध करने की कोशिश करते हैं जो वे अतिरिक्त देशी प्लगइन्स के पूर्वनिर्धारित सेट के साथ बनाए जाते हैं। PhoneGap एक बिल्ड सेवा भी प्रदान करता है और इसमें एक सामान्य ग्राहक होता है जो तब तक काम करता है जब तक आप स्वीकृत प्लगइन्स का उपयोग करते हैं।
जैसा कि आप देख सकते हैं, एक्सपो उपकरण का एक सेट है। अंत में यह आसानी से अपने मोबाइल प्रोजेक्ट्स को स्टोर करने, साझा करने और प्रकाशित करने की अनुमति देता है। यह फोनगैप अनुभव के समान है (लेकिन बहुत बेहतर और कम भ्रमित करने वाला)।
मैं निश्चित रूप से इन 2 मामलों को छोड़कर किसी भी नई प्रतिक्रिया मूल ग्रीनफील्ड परियोजना के लिए एक्सपो की सिफारिश करूंगा:
यह आधिकारिक एक्सपो प्रलेखन में समझाया गया है
एक्सपो और रिएक्टिव नेटिव में क्या अंतर है?
एक्सपो एक तरह का है जैसे रिएक्ट नेटिव के लिए रेल्स। आपके लिए बहुत सी चीजें स्थापित की जाती हैं, इसलिए यह जल्दी शुरू हो और सही रास्ते पर हो।
एक्सपो के साथ, आपको Xcode या Android Studio की आवश्यकता नहीं है। आप जो भी टेक्स्ट एडिटर (Atom, vim, emacs, Sublime, VS Code, जो भी आपको पसंद हो) के साथ जावास्क्रिप्ट का उपयोग करके लिखते हैं। आप XDE (हमारे डेस्कटॉप सॉफ़्टवेयर) को मैक, विंडोज और लिनक्स पर चला सकते हैं।
यहां कुछ चीजें दी गई हैं, जिन्हें एक्सपो आपको सही काम करने के लिए देता है:
IOS और Android के लिए समर्थन
आप एक्सपो में लिखे गए ऐप को आईओएस और एंड्रॉइड दोनों बॉक्स के ठीक बाहर इस्तेमाल कर सकते हैं। आपको प्रत्येक के लिए एक अलग बिल्ड प्रक्रिया से गुजरने की आवश्यकता नहीं है। बस एक्सपो क्लाइंट ऐप में किसी भी एक्सपो ऐप को आईओएस या एंड्रॉइड (या अपने कंप्यूटर पर एक सिम्युलेटर या एमुलेटर) पर ऐप स्टोर से खोलें।
सूचनाएं भेजना
पुश सूचनाएँ आईओएस और एंड्रॉइड दोनों के बॉक्स में से एकल, एकीकृत एपीआई का उपयोग करके सही काम करती हैं। आपको APNS और GCM / FCM सेट करने या ZeroPush या कुछ भी कॉन्फ़िगर करने की आवश्यकता नहीं है। हमें लगता है कि हमने इसे इतना आसान बना दिया है जितना कि अभी हो सकता है।
फेसबुक लोगिन
यह अपने आप ठीक से स्थापित होने में लंबा समय ले सकता है, लेकिन आपको इसे एक्सपो में 10 मिनट या उससे कम समय में काम करने में सक्षम होना चाहिए।
त्वरित अद्यतन
XDE में प्रकाशित करें पर क्लिक करके सभी एक्सपो ऐप को सेकंड में अपडेट किया जा सकता है। आपको कुछ भी सेट करने की ज़रूरत नहीं है; यह सिर्फ इस तरह से काम करता है। यदि आप एक्सपो का उपयोग नहीं कर रहे हैं, तो आप इस समस्या के लिए या तो Microsoft कोड पुश का उपयोग करेंगे या अपना स्वयं का समाधान रोल करेंगे
परिसंपत्ति प्रबंधन
छवियाँ, वीडियो, फोंट, आदि सभी को एक्सपो के साथ इंटरनेट पर गतिशील रूप से वितरित किया जाता है। इसका मतलब है कि वे तुरंत अद्यतन के साथ काम करते हैं और इसे मक्खी पर बदला जा सकता है। एक्सपो में निर्मित परिसंपत्ति प्रबंधन प्रणाली आपके रेपो में सभी परिसंपत्तियों को एक सीडीएन पर अपलोड करने का ध्यान रखती है ताकि वे किसी को भी जल्दी से लोड कर सकें।
एक्सपो के बिना, सामान्य बात यह है कि अपनी संपत्ति को अपने ऐप में बंडल करें, जिसका अर्थ है कि आप उन्हें बदल नहीं सकते हैं। या आपको अपनी संपत्ति को CDN या खुद के समान रखने का प्रबंधन करना होगा।
नए रिएक्टिव मूल निवासी विज्ञप्ति के लिए आसान अद्यतन
हम हर कुछ हफ्तों में एक्सपो की नई रिलीज़ करते हैं। आप अपने ऐप बाइनरी के पुनर्निर्माण के बारे में चिंता किए बिना, यदि आप चाहें, तो प्रतिक्रियाशील मूल के पुराने संस्करण पर बने रह सकते हैं या एक नए में अपग्रेड कर सकते हैं। आप अपने समय पर जावास्क्रिप्ट को अपग्रेड करने के बारे में चिंता कर सकते हैं।
लेकिन कोई देशी मॉड्यूल ...
एक्सपो के बारे में सबसे सीमित बात यह है कि आप अपने खुद के मूल मॉड्यूल को एक्सपोकिट को अलग करने और उपयोग किए बिना नहीं जोड़ सकते हैं।
Expo XDE
कंसोल या exp start
कंसोल कमांड आउटपुट में उत्पन्न होता है ।
expo start
आपको अपने लोकलहोस्ट पर एक आईपी एड्रेस भी दिखाएगा जिसमें आप क्यूआर कोड से एक्सेस कर सकते हैं
एक्सपो सीएलआई
पेशेवरों: -
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.
आप अपनी आवश्यकताओं के अनुसार किसी भी दृष्टिकोण को पसंद कर सकते हैं।
मैं यहां एक नोट करूंगा कि एक्सपो 16.5 के पुराने संस्करण का उपयोग कर रहा है जो आपको नए हुक फीचर का उपयोग करने से रोक देगा। यदि आप अपने संस्करण नियंत्रणों को देखने के लिए एक्सपो के साथ जाने का निर्णय लेते हैं। यदि आपको अजीब त्रुटियां हो रही हैं, तो प्रतिक्रिया-नेविगेशन के पुराने संस्करणों को 16.5 संस्करण के साथ उपयोग करने की आवश्यकता होगी।
expo update
एक्सपो द्वारा प्रबंधित अधिकांश पैकेजों के लिए संगत संस्करण प्राप्त करने का एक बहुत अच्छा काम करता है। फिलहाल, मुझे नहीं लगता कि यह रिएक्ट नेविगेशन को अपडेट करता है, लेकिन यह लाइब्रेरी वास्तव में एक्सपो द्वारा प्रायोजित है। व्यक्तिगत रूप से, मैं शायद ही कभी रिएक्ट नेविगेशन और एक्सपो के बीच संगतता मुद्दों में भागता हूं (मुझे लगता है कि मुझे बीटा संस्करणों का उपयोग करते समय कुछ मुद्दों का सामना करना पड़ा)। हालाँकि, आप एक्सपो द्वारा प्रबंधित पैकेज के साथ अधिक संगतता समस्याएँ देख सकते हैं।
एक्सपो और प्रतिक्रिया-देशी-क्ली के फायदे और नुकसान के बारे में जवाब पूर्ण हैं। मैं अपने व्यक्तिगत अनुभव के रूप में एक और बिंदु का उल्लेख करना चाहता हूं। एक्सपो में परियोजना में डिफ़ॉल्ट रूप से कई मॉड्यूल शामिल हैं और इसके साथ काम करना आसान बनाता है। लेकिन यह उत्पादन चरण पर एक बड़ी समस्या है क्योंकि निर्मित android
और ios
संस्करणों का इतना बड़ा आकार है। उदाहरण के लिए यदि आपके पास फ़ाइल आकार के साथ एक एकल पृष्ठ है 'Hello World'
, apk
तो इसके बारे में होगा 19 MB
। अभिक्रिया-मूल- cli में एक ही परियोजना होने के परिणामस्वरूप आकार में एक ऐप होगा 6 MB
।
यदि आप एक वाणिज्यिक ऐप विकसित करना चाहते हैं तो व्यक्तिगत रूप से मैं एक्सपो का उपयोग करने की अनुशंसा नहीं करता हूं।
मैंने एक वर्ष से अधिक का अनुभव किया है जो एक्सपो के साथ काम करता है यदि ऐप का आकार आपके लिए एक्सपो का उपयोग करने के लिए महत्वपूर्ण नहीं है क्योंकि मैप को लागू करना आसान है, तो प्रतिक्रिया-मूल की तुलना में आसान पुश करें लेकिन यदि आप प्रकाशित करना चाहते हैं तो परियोजना के अंत में Google Play में ऐप या किसी अन्य स्टोर में आपके पास अपने एपीके रिएक्ट-देशी में कुछ अनुमति को हटाने के लिए एक चुनौती है जिसे आप सब कुछ बदल सकते हैं लेकिन कुछ लाइब्रेरी जैसे पुश नोटिफिकेशन या मैप को आयात करने के लिए कुछ चुनौतियों की भी आवश्यकता होती है क्योंकि आपको इन पुस्तकालयों को मैन्युअल रूप से जोड़ना होगा Android और iOS प्रोजेक्ट्स
एक्सपो एक टूलकिन है जो रिएक्ट नेटिव के आसपास बनाया गया है ताकि आप जल्दी से एक ऐप शुरू कर सकें। यह टूल्स का एक सेट प्रदान करता है जो रिएक्ट नेटिव ऐप और इंटरफ़ेस और सेवाओं के विकास और परीक्षण को सरल बनाता है जो आमतौर पर तीसरे पक्ष के मूल रिएक्ट नेटिव घटकों में उपलब्ध होते हैं। एक्सपो के साथ आप इन सभी को एक्सपो एसडीके में पा सकते हैं।