22 पॉइंट द्वारा xguru 2024-05-20 | 6 टिप्पणियां | WhatsApp पर शेयर करें
  • बेहतरीन cross-platform mobile development framework की तलाश करते समय Flutter, React Native और Ionic पर नज़र गई
  • ये तीनों framework एक ही codebase से कई platforms पर अच्छा performance देने का वादा करते हैं
  • API का उपयोग करके बुनियादी data को स्क्रीन पर दिखाने वाला mobile app तीन अलग-अलग versions में बनाकर तुलना की गई
    • ऐप की requirements: स्क्रीन load होने पर देश की जानकारी दिखाना, loading spinner, नया random देश लाने वाला button, देशों की list केवल एक बार fetch करना

Flutter

  • Flutter, 2017 में Google द्वारा बनाया गया open source framework है, जो एक ही codebase से कई platforms के लिए native applications बनाता है. यह Dart language पर आधारित है
  • Flutter documentation और tutorial को एक घंटे तक सीखने के बाद development शुरू किया
  • development environment setup और emulator चलाना सहज रहा
  • 4 घंटे में बुनियादी features वाला app बना लिया
  • Android Studio की suggestion features ने development में काफी मदद की
  • Hot Reload feature से बदलाव तुरंत देखे जा सकते हैं, जिससे development time कम हुआ
  • लेकिन "everything is a widget" की अवधारणा के कारण nesting बहुत है और style व elements मिले-जुले होने से यह सहज नहीं लगा

React Native

  • Meta द्वारा 2015 में बनाया गया open source JavaScript framework, जिससे native Android और iOS applications बनाई जा सकती हैं
  • React library इस्तेमाल करने का पहले से अनुभव था, और VS Code भी पहले से install था
  • development environment setup की प्रक्रिया जटिल और उलझाऊ लगी (Expo Go और React Native CLI के अंतर को समझना ज़रूरी था)
  • 2.5 घंटे में app पूरा हो गया, लेकिन image display की समस्या सुलझाने में कठिनाई हुई
  • React की component-based architecture की वजह से code संक्षिप्त और modular रहा
  • JSX का उपयोग करके components का UI, HTML जैसे code में लिखा जा सकता है

Ionic

  • Ionic, 2012 में बना open source mobile UI toolkit है, जो एक ही codebase से आधुनिक और high-quality cross-platform mobile apps बनाने में मदद करता है
  • इसमें React, Vue और Angular के साथ development किया जा सकता है
  • यह समृद्ध UI components और आकर्षक user interface प्रदान करता है
  • Ionic videos और guides को 30 मिनट तक देखने के बाद development शुरू किया
  • app को Angular version में बनाया, और परिचित development ecosystem की वजह से तेज़ी से काम हो गया
  • शुरुआती setup में बने कई JSON और TypeScript configuration files थोड़ा बोझिल लगे
  • 2 घंटे में app पूरा कर लिया
  • UI implementation आसान था और documentation अच्छी तरह की गई है
  • HTML templates का उपयोग करके UI और logic को अलग किया जा सकता है
  • Spinner और Floating Action Button जैसे UI components की वजह से UI बनाना आसान रहा

तुलना: Flutter, React Native, Ionic

  • Code style और language
    • JavaScript-आधारित frameworks code readability और simplicity में आगे रहे
    • Flutter का nested code style कुछ हद तक उलझाऊ और पढ़ने में कठिन लगा
    • React और Angular templates में किसे पसंद करेंगे, यह व्यक्तिगत पसंद पर निर्भर है
  • Ecosystem
    • अप्रैल 2024 तक, अमेरिका में install किए गए शीर्ष 500 apps में 12.57% React Native से, 5.24% Flutter से, और 0.52% Ionic से बने थे
    • React Native काफी flexibility देता है, लेकिन setup और tools के उपयोग में भ्रम भी पैदा कर सकता है
    • Flutter का adoption बढ़ रहा है, और GitHub पर इसके public repositories की संख्या भी अधिक है
  • Tools
    • Hot Reload
      • browser में तीनों frameworks code changes होने पर app को तेज़ी से reload करते हैं
      • Android device या simulator पर Flutter का Hot Reload सबसे तेज़ है
    • Remote debugging
      • Flutter DevTools सहज हैं और कई सुविधाएँ देते हैं
      • Ionic में Chrome Developer Tools जैसा interface है, इसलिए debugging आसान है
      • React Native, React DevTools देता है, लेकिन remote debugging में Flutter और Ionic से पीछे है
  • App size
    • Ionic: 3.2MB, Flutter: 18.1MB, React Native: 25.2MB
    • install होने के बाद ये क्रमशः 9.61MB, 34.66MB और 55.47MB जगह घेरते हैं
  • User experience
    • Flutter और Ionic platform के अनुरूप UI components देते हैं, जिससे एकसमान user experience मिलता है
    • React Native में अतिरिक्त libraries पर निर्भर रहना पड़ता है
  • Performance
    • Flutter native code में compile होता है, इसलिए इसके React Native से तेज़ होने की उम्मीद है
    • Ionic WebView में चलता है, इसलिए performance कुछ धीमा हो सकता है

निष्कर्ष

  • Flutter के code style को और गहराई से समझने की इच्छा है, और debugging का खेल बदल देने वाला Hot Reload feature आकर्षक है
  • फिर भी, existing web development knowledge (TypeScript, HTML, CSS) को mobile app development में इस्तेमाल कर पाने की वजह से Ionic अधिक पसंद आया
  • लगता है कि Ionic development skills बढ़ाने से mobile और web developer के रूप में क्षमता बेहतर होगी
  • जैसे-जैसे project आगे बढ़ेगा, code organization, separation of concerns और component reusability और स्पष्ट होंगे
  • बेहतरीन applications इन तीनों frameworks में से किसी से भी बनाई जा सकती हैं
    • framework चुनते समय development के आनंद को नज़रअंदाज़ नहीं करना चाहिए
    • प्रयोगात्मक app बनाकर अलग-अलग frameworks को आज़माने की सिफारिश की जाती है

6 टिप्पणियां

 
firea32 2024-05-27

native UI का इस्तेमाल करने वाली यही एकमात्र cross-platform लाइब्रेरी है, इसलिए इसे छोड़ना मुश्किल है…
अगर कोई विकल्प हो तो मैं तुरंत बदलना चाहूंगा, लेकिन मुख्य लेख में Flutter और Ionic—दोनों ने native UI नहीं चुना है, यह देखकर लगता है कि इसका भविष्य नहीं है।

 
bus710 2024-05-21

मेरे मामले में, Flutter अच्छा लगा क्योंकि उसमें html/css जाने बिना Dart से सब कुछ किया जा सकता था।

 
superwoou 2024-05-23

आमतौर पर जिन लोगों ने पहले web पर काम किया है, वे rn को पसंद करते हैं, और जिन्होंने नहीं किया, उन्हें flutter ज़्यादा सहज लगता है।

 
optid77 2024-05-20

वैसे भी cross-platform खुद अभी काफ़ी niche है, इसलिए इससे जुड़ी libraries का development अक्सर धीमा रहता है या वे पर्याप्त नहीं होतीं।
React-Native की ताकत शायद इस बात में है कि यह React ecosystem का कुछ हिस्सा साझा करता है।

मुझे याद है कि 2 साल पहले की तुलना में हाल ही में RN पर development करते समय tailwind, ReactQuery, TRPC जैसी React में सक्रिय रूप से विकसित और इस्तेमाल होने वाली libraries का उपयोग करने से RN की productivity लगातार बेहतर लगी।

 
kaistj 2024-05-20

मेरे व्यक्तिगत अनुभव में, ऐप डेवलपमेंट के दौरान सबसे महत्वपूर्ण हिस्से state management और UI थे।

RN में global management के लिए Redux + Redux-saga, और page-wise React-query का इस्तेमाल किया था।
Flutter में Riverpod इस्तेमाल किया था।

व्यक्तिगत रूप से मुझे React पक्ष में state management और logic के flow को समझना थोड़ा आसान लगा,
और डेवलप करना भी सुविधाजनक था। Web-based platform होने की वजह से डेवलपमेंट थोड़ा आसान था।

Flutter में व्यक्तिगत रूप से Riverpod को समझना आसान नहीं था। (मैंने उस पर थोड़ा कम समय भी लगाया था।)
सरल state management में कोई बड़ी मुश्किल नहीं थी, लेकिन शायद platform की समझ की वजह से,
state change handling और server API processing के बाद common handling वाले हिस्सों को implement करने में जटिलता या कठिनाई महसूस हुई।

UI की तरफ Flutter के widgets में properties और functions अच्छी तरह define थे, इसलिए डेवलपमेंट आसान था।
React में मैंने antd UI library इस्तेमाल की थी, और उसका उपयोग अनुभव बुरा नहीं था।

React का अनुभव 2 साल पुराना है, इसलिए डेवलपमेंट से जुड़ी libraries का अनुभव भी पुराना है,
और Flutter पर मैंने हाल ही में डेवलप किया, लेकिन उसमें दिया गया समय कम था।

अपना डेवलपमेंट अनुभव भी कमेंट के रूप में छोड़ रहा हूँ~
इसे बस इस तरह लें कि "अच्छा, ऐसा पहलू भी होता है..." ~ ^^

 
xguru 2024-05-20

धन्यवाद! मुझे लगता है कि यह दूसरे लोगों के लिए भी मददगार होगा।