मैं एक मोबाइल डेवलपर हूं जिसने इस मुद्दे पर विचार करते हुए बहुत समय बिताया है।
तुमने क्यों पूछा?
सबसे अधिक संभावना है, आप एप्लिकेशन विकास लागत को कम करने की उम्मीद करते हैं:
- मौजूदा HTML5 / जावास्क्रिप्ट विकास कौशल का उपयोग करना
- खरोंच से कई एप्लिकेशन लिखे बिना कई प्लेटफार्मों को लक्षित करना
- भविष्य में कई कोडबेस को बनाए रखने के लिए नहीं
कारणों में यह भी शामिल हो सकता है:
- HTML5 / जावास्क्रिप्ट विकास को देशी प्लेटफॉर्म विकास की तुलना में "आसान" माना जाता है
- डेवलपर प्रोग्राम पंजीकरण शुल्क के भुगतान से बचना
- Appstore सामग्री प्रतिबंध (जुआ आदि) से बचना
- विकास हार्डवेयर की खरीद से बचना (जैसे iPhone विकास के लिए मैक)
परिभाषाएं
आइए हम बताए गए तीन तरीकों में से प्रत्येक का ठीक वही अर्थ निकालें जो हम बता रहे हैं:
नेटिव
एक ऐप जो डिवाइस पर स्थापित होता है, आमतौर पर इसके ऐप स्टोर से (हालांकि कभी-कभी साइडलोड किया जा सकता है)। इस चर्चा के प्रयोजनों के लिए, एक मूल एप्लिकेशन का यूआई आमतौर पर केवल एक पूर्ण स्क्रीन वेबव्यू से मिलकर नहीं बनता है।
मोबाइल वेब
यह वास्तव में कोई भी वेब पेज हो सकता है, हालांकि इस चर्चा के लिए आइए एक पेज के वेब ऐप पर विचार करें जो मूल ऐप के लुक और फील की नकल करने का प्रयास करता है। यह एक देशी ऐप नहीं है, यह डिवाइस के ब्राउज़र में चलता है।
हाइब्रिड
हाइब्रिड ऐप instanceof
देशी ऐप।
अधिकांश लोग शायद एक हाइब्रिड ऐप को एक सिंगल-पेज मोबाइल वेब ऐप (फिर से मूल ऐप के रूप और स्वरूप की नकल करते हुए) समझते हैं, लेकिन देशी सेवाओं (ए ला फोनगैप) तक पहुंच के साथ एक मूल ऐप के रूप में पैक किया जाता है।
हालाँकि वास्तव में फोनगैप मॉडल और पूरी तरह से देशी के बीच एक स्पेक्ट्रम है जो मैं बाद में आऊंगा।
मोबाइल वेब
तकनीकी प्रतिबंध
आइए सबसे पहले मोबाइल वेब ऐप पर कुछ तकनीकी प्रतिबंधों को सूचीबद्ध करते हैं जो कि आप जो कर रहे हैं उसके आधार पर खुद ही डील-ब्रेकर हो सकते हैं:
- केवल HTML / कैनवास UI
- कुछ डिवाइस ईवेंट और सेवाओं तक पहुंच नहीं (ये व्यापक रूप से प्रलेखित हैं)
- ऐप स्टोर में सूचीबद्ध नहीं किया जा सकता (खोज को प्रभावित करना)
- पूर्ण स्क्रीन बन सकता है और iOS पर होमस्क्रीन आइकन हो सकता है, हालांकि यह अधिकांश उपयोगकर्ताओं के लिए एक असामान्य और अपरिचित अनुभव है
यदि आप उपरोक्त सभी के साथ रह सकते हैं, तो एकल-पृष्ठ देशी-शैली वेब एप्लिकेशन की चुनौतियों के बारे में अधिक पढ़ें। हालांकि यह खंड एफटी ऐप के संदर्भ के बिना पूरा नहीं होगा।
फाइनेंशियल टाइम्स एफटी वेब एप्लिकेशन एप्लिकेशन की इस शैली का एक प्रसिद्ध उदाहरण है। यहाँ इसके बारे में यूके गार्जियन अखबार की एक दिलचस्प विशेषता है।
यह निश्चित रूप से इंजीनियरिंग की एक उल्लेखनीय उपलब्धि है। ध्यान दें कि यह वर्तमान में अभी भी केवल iOS पर ही उपलब्ध है - यह मुझे बताता है कि वे वास्तव में बहुत मुश्किल होने के लिए उन्नत क्रॉस-ब्राउज़र विकास की चुनौतियों को हल कर रहे हैं।
सिंगल-पेज देशी शैली के वेब ऐप
यह अनुभाग मोबाइल वेब और फ़ोनगैप-शैली ऐप पर लागू होता है।
एक वेब ऐप के भीतर मूल-शैली दिखती है और महसूस होती है जो आमतौर पर स्नेहा टच जैसे ढांचे के साथ हासिल की जाती है जो आपको उपयोग करने के लिए यूआई घटकों का एक सूट प्रदान करता है।
इस तरह के ढांचे बहुत सरल यूआई के लिए ठीक हैं। हालाँकि उनमें लचीलेपन की कमी होती है। आप सेन्चा का उपयोग करके किसी भी मूल ऐप डिज़ाइन को लागू करने में सक्षम नहीं होंगे, आपको अपने डिज़ाइन को अनुकूलित करने की आवश्यकता होगी कि रूपरेखा क्या समायोजित कर सकती है।
जिस तरह से ये ढांचे पीड़ित हैं, वह मंच की अपनी यूआई पेचीदगियों का अनुकरण करने की कोशिश में है। जब आप iPhone पर एक सूची के अंत में स्क्रॉल किया है तो यह अच्छा सा उछल प्रभाव आपकी रूपरेखा को जावास्क्रिप्ट में अनुकरण करने की आवश्यकता है। इसे पूरी तरह से फिर से बनाना असंभव है, यह धीमा होने का खतरा होगा, और आपके उपयोगकर्ता एक ऐप के "अलौकिक घाटी" में फंस जाएंगे जो मूल की तरह सॉर्ट करता है, लेकिन स्पष्ट रूप से नहीं है, और एक गैर-तकनीकी है उपयोगकर्ता अपनी उंगली ठीक से क्यों नहीं डाल पाएंगे।
"HTML5 / जावास्क्रिप्ट आसान है" मिथक
वेब ब्राउज़र के भीतर डिवाइस विखंडन व्याप्त है, और जब आप सबसे बुनियादी HTML और सीएसएस से परे हो जाते हैं, तो आप उन चीजों को नोटिस करेंगे जो आप अपेक्षा के अनुरूप काम नहीं करते हैं। आप अपने आप को अधिक से अधिक समय बिताने के लिए मिल सकता है fiddly UI मुद्दों को सुलझाने की तुलना में आप इसे दो बार मूल रूप से करने से बचा सकते हैं। आप देशी, टिप्पणी जा रहे हैं कि स्थानीय ऐप WebViews हैं नहीं डिवाइस ब्राउज़रों के समान और अपने स्वयं के विखंडन मुद्दे हैं।
और जैसे ही आपका ऐप अधिक कार्यात्मक रूप से जटिल हो जाता है, आप पाएंगे कि आपको अपने जावास्क्रिप्ट को साफ और बनाए रखने के लिए बुनियादी jquery कौशल से अधिक की आवश्यकता है।
उस ने कहा, इस दृष्टिकोण के साथ सरल, कार्यात्मक एप्लिकेशन बहुत जल्दी बनाना पूरी तरह से संभव है। लेकिन यह बहुत स्पष्ट है जब कोई ऐप ऐसा कर रहा है।
आगे स्पेक्ट्रम के साथ
इसलिए, हम चाहते हैं कि फोनगैप-शैली वाले ऐप्स की तुलना में एक बेहतर UX पेश किया जा सके, जो कई बार स्क्रैच से बिल्कुल सब कुछ लिखे बिना। हम क्या कर सकते है?
गैर-यूआई कोड साझा करें
कई देशी प्लेटफार्मों पर व्यापारिक तर्क साझा करने के लिए कई प्रकार की तकनीकें उपलब्ध हैं। Google ने J2ObjC लॉन्च किया है जो जावा को ऑब्जेक्टिव-सी में तब्दील करता है। कोड की सावधानीपूर्वक फैक्टरिंग के साथ, एंड्रॉइड और आईओएस दोनों पर एक जावा लाइब्रेरी का उपयोग किया जा सकता है।
कैलात्रा और किरिन जैसे पुस्तकालय , जावास्क्रिप्ट में लिखे गए कोडबेस (और इसलिए जावास्क्रिप्ट के लिए संकलित की जा सकने वाली कुछ भी) को देशी कोड से हेरफेर करने की अनुमति देते हैं। अस्वीकरण: मैं भविष्य के प्लेटफार्मों के लिए काम करता हूं जिन्होंने किरिन बनाया; हमें GWT के साथ जावा से उत्पन्न जावास्क्रिप्ट के साथ iOS पर इसका उपयोग करने में बड़ी सफलता मिली है, जावा कोड भी एंड्रॉइड पर मूल रूप से चलाया जा रहा है।
वेबव्यू का उपयोग करें ... जहां उपयुक्त हो
स्क्रीन संक्रमण और उछाल प्रभावों की नकल करने में सक्षम होने के लिए फुल स्क्रीन वेबव्यू का बहुत काम है। लेकिन मूल ऐप क्रोम के अंदर एक वेबव्यू मूल निवासी से अप्रभेद्य हो सकता है।
देशी ऐप और वेबव्यू के लिए संवाद करने के लिए मानक और अच्छी तरह से प्रलेखित तरीके हैं।
इस तरह से किए जाने पर सूचियाँ और तालिकाएँ विशेष रूप से अच्छी तरह से काम कर सकती हैं, हालाँकि पाठ प्रविष्टि मूल रूप से (कीबोर्ड पर पूर्ण नियंत्रण के लिए) किसी चीज़ का सबसे अच्छा उदाहरण है।
संक्षेप में
आपके लिए सही दृष्टिकोण इस बात पर निर्भर करता है कि आपका ऐप कितना जटिल है और आप किस स्तर के UI पॉलिश से संतुष्ट होंगे।
मेरा आदर्श वाक्य: जहां भी आप कर सकते हैं, वेबवाइट्स का उपयोग करें, लेकिन सुनिश्चित करें कि आपके उपयोगकर्ता नहीं बता सकते ।