Flutter یا React Native کدامیک را انتخاب کنیم؟
آیا می خواهید برنامه ها را سریعتر توسعه دهید؟ و اینکه میخواهید با توسعه کراس پلتفرم (cross platform) به دنبال کاهش هزینه ها باشید اما نمیدانید کدام تکنولوژی را انتخاب کنید؟
در این مقاله ما به شما کمک کنیم تا فریمورکی که با ایده برنامه شما مطابقت دارد را پیدا کنیم.
Flutter در برابر React Native: به طور خلاصه
Flutter | React Native Flutter | |
تعریف کلی | یک Toolkit UI قابل حمل برای ایجاد برنامه های Native کامپایل شده در موبایل ، وب و دسکتاپ از یک codebase | فریمورکی برای ایجاد برنامه های native به وسیله React |
انتشار رسمی | دسامبر 2018 ، Google I/O | مارس 2015 ، کنفرانس F8 فیسبوک |
سازنده | ||
رایگان و منبع بازFree & open source | بله | بله |
زبان برنامه نویسی | دارت (Dart) | جاوا اسکریپت (JavaScript) |
محبوبیت | 120،000 ستاره در Github (مه 2021) | 95،300 ستاره در Github (مه 2021) |
قابلیت Hot Reload | بله | بله |
عملکرد native | عالی | عالی |
UI (رابط کاربری) | برنامه های Flutter در سیستم عامل های به روز همانند نسخه های قدیمی عملکرد قابل قبولی دارند.از آنجا که آنها فقط یک codebase دارند ، عملکرد برنامه ها در iOS و Android یکسان است ، اما به لطف Material Design و ویجت های Cupertino ، می توانند از platform design نیز الگو برداری کنند. چگونه ممکن است؟Flutter شامل دو دسته ویجت است که با design languages خاص مطابقت دارد: ویجت های Material Design ، design languages گوگل را با همان نام پیاده سازی می کنند. ویجت های Cupertino از طراحی iOS اپل الگو برداری می کنند.این بدان معنی است که عملکرد و رفتار برنامه Flutter شما در هر پلتفرمی طبیعی است و از کامپوننت های native خود الگو برداری می کند. | کامپوننت های برنامه دقیقاً شبیه کامپوننت های native هستند (به عنوان مثال یک دکمه(Button) در دستگاه iOS دقیقاً شبیه یک دکمه native iOS است و در Android هم به همین صورت است).در حقیقت استفاده React Native از کامپوننت هایnative under the hood ، باید به شما این اطمینان را بدهد که پس از هرگونه به روزرسانی UI سیستم عامل ، کامپوننت برنامه شما نیز فوراً upgrade شود.گفته می شود ، این عمل می تواند UI برنامه را به هم بریزد ، اما بسیار کم اتفاق می افتد.اگر می خواهید برنامه شما در کراس پلتفرم ها و همچنین در نسخه های قدیمی سیستم عامل (همانطور که Flutter به آن دست یافته) تقریباً یکسان به نظر برسد ، پس از کتابخانه های third-party استفاده کنید. آنها به شما امکان می دهند از کامپوننت های Material Design به جای کامپوننت native استفاده کنید. |
اشتراک گذاری کد | با Flutter 2 ، ما می توانیم از همان codebase درپنج سیستم عامل استفاده کنیم: iOS ، Android ، Windows ، macOS و linux.فلاتر حتی می تواند در اتومبیل ها ، تلویزیون ها و لوازم خانگی هوشمند به کار گرفته شود.شاید بزرگترین خبر در موردFlutter 2 ، پشتیبانی از کیفیت تولید وب باشد. کاربرد آن به شرح زیر است:· PWA ها ، دسترسی وب را با قابلیت های یک برنامه رومیزی(Desktop) ترکیب می کند .· SPA ها، یک بار بارگیری می شوند و داده ها را به سرویس های اینترنتی از و به اینترنت منتقل می کنند.· برنامه های موجود تلفن همراه – اجازه می دهد برنامه های Flutter بر روی دسکتاپ اجرا شوند. | iOS و Android ، اما کتابخانه هایی وجود دارد که به شما امکان می دهد از کد یکسانی برای ایجاد برنامه های iOS ، Android ، وب و Windows 10 استفاده کنید.همچنین شما میتوانید کد مشترک در موبایل, دسکتاپ و برنامههای وب را در یک repository جداگانه extract کنید و از آن به عنوان یک پروژه جداگانه استفاده کنید ; سپس به روش دیگر برای آن dependency injection را انجام دهید.این کار به توسعه دهنده اجازه میدهد تا بر روی نوشتن کد برای یک پلتفرم خاص بدون نیاز به سازگاری با یک برنامه دیگر تمرکز کند. |
برترین برنامه های ساخته شده با این تکنولوژی | برنامه Xianyu سازنده Alibaba ، برنامه Hamilton سازنده Hamilton Musical ، برنامه Google Ads ، Philips Hue ، My BMW ، Makani | Instagram, Facebook, Facebook Ads, Skype, Tesla |
زمان ارائه به بازار | معمولا بسیار سریعتر از توسعه native است. | همانند سرعت توسعه با Flutter است.با این حال…React Native از المان های bridge و native استفاده می کند ، بنابراین ممکن است برای هر پلتفرم به بهینه سازی جداگانه نیاز داشته باشد. مشکلی که Flutter مبتنی بر widget با آن مواجه نمی شود، در نتیجه ممکن است توسعه برنامه با React Native طولانی تر شود. |
مزایا | · ظاهر عالی به لطف ویجت های قدرتمند· رشد سریع community و محبوبیت.· documentation عالی با پشتیبانی قوی از تیم Flutter (که توسعه با Flutter را آسان می کند) ؛· بهبود Flutter در وب و ارائه یک codebase قدرتمند در سراسر پلتفرم های تلفن همراه و وب | ثبات (5+ سال در بازار)بسیاری از market player ها از React Native استفاده می کنند.انجمن (community) کامل و وسیعیادگیری آسان تکنولوژیتعداد زیاد آموزش و کتابخانه ، که امکان توسعه سریع و آسان را فراهم می کند.کد را به راحتی می توان مجدداً برای توسعه برنامه وب و دسکتاپ استفاده کرد. |
چه زمانی استفاده از آن مناسب نیست ؟ | اگر…برنامه شما نیاز به3D Touch داشته باشد. (در حال حاضر ، Flutter از 3D پشتیبانی نمی کند ،اما این ویژگی در نقشه راه بلند مدت تیم Flutter وجود دارد)طراحی برنامه شما برای platform خاصی باشد.نیاز به تعاملات متعدد با سیستم عامل و یا نیاز به کتابخانه های native کمیاب و با کم شناخت.نیاز به یک رابط کاربری minimalistic (ساده گرا) دارید ، اما استفاده از سخت افزار تلفن همراه بسیار مهم باشد. (به عنوان مثال برنامه ای که موسیقی پخش می کند یا فقط عکس می گیرد).می خواهید فورا یک برنامه (برنامه کم حجم) ایجاد کنیداگر برنامه شما شبیه هر یک از موارد بالا است ، بهتر است توسعه native را انتخاب کنید. | اگر…برنامه شما باید task کمتر یا خیلی خاص (مانند محاسبات) درbackground را انجام دهد.شما نیاز به ارتباط custom با بلوتوث دارید (که پیاده سازی آن با استفاده از React Native دشوار است).می خواهید یک برنامه فقط برای Android ایجاد کنیددر حقیقت ، اگر می خواهید یک برنامه iOS بسازید و با جاوا اسکریپت آشنایی دارید ، React Native گزینه خوبی است .اما اگر می خواهید فقط یک برنامه Android داشته باشید ، احتمالاً بهتر است توسعه native با یک تیم دیگر داشته باشید. چرا؟ در حال حاضر React Native، iOS را بهتر از Android پشتیبانی می کند.اگر برنامه شما هر یک از موارد بالا را داشته باشد ، بهتر است توسعه native را انتخاب کنید. |
مقدمه ای بر Flutter و React Native
فلاتر (Flutter)چیست؟
Flutter یک Toolkit UI قابل حمل(Portable) است. به عبارت دیگر ، یک برنامه جامع توسعه نرم افزار (SDK) است که شامل ویجت ها و ابزارها است.
چرا Flutter ؟
Flutter توسعه برنامه های cross-platform را امکان پذیر می کند.
Flutter روش ساده ای فراهم می کند تا توسعه دهندگان اپلیکیشن های جذاب موبایل (iOS ، Android) ، وب و دسکتاپ را با استفاده از یک codebase ایجاد و گسترش دهند.
Flutter’s desktop support
می توانید سورس کد Flutter را در یک برنامه nativeدسکتاپ ویندوز ، macOS یا لینوکس کامپایل کنید.
توسعه دهندگان می توانند پلاگینی که از سیستم عامل های macOS ، Windows یا Linux پشتیبانی می کنند نصب کنند ، یا می توانند خودشان ایجاد کنند. در نتیجه با Flutter ، می توانید سورس کد Flutter را به زبان native برنامه دسکتاپ Windows ، macOS یا Linux کامپایل کنید.
Flutter’s desktop support به صورت نسخه بتا در دسترس است. با این حال، هنوز gap هایی در ویژگی های آن (feature) وجود دارد.
Flutter for Web
همان تجربیات (experiences) موبایل را در وب ارائه می دهد. این بدان معناست که اکنون می توانید برنامه های Android ، iOS و browser را از همان codebase بسازید.
Flutter for Web در سناریوهای زیر بسیار مفید است:
- Progressive Web Apps (PWA) ساخته شده با Flutter:
فلاتر ، PWA های با کیفیت بالا را ارائه می دهد که محیط کاربری یکپارچه ای دارد ، از جمله نصب ، پشتیبانی آفلاین و UX مناسب
- Single Page Applications (SPA)
یک بار بارگیری می شوند و داده ها را به سرویس های اینترنتی منتقل می کنند.
- برنامه های موجود تلفن همراه
پشتیبانی وبFlutter یک مدل تحویل browser-base را برای برنامه های موجود تلفن همراه Flutter ارائه می دهد.
کمی بیشتر در مورد Flutter…
- رایگان و منبع باز (Open Source) است.
- بر اساس Dart است ، یک زبان برنامه نویسی شی گرا (نسخه دارت در حال حاضر 2.14 می باشد)است. نسبتاً جدید است و یادگیری آن آسان است . مخصوصاً برای توسعه دهندگان با تجربه که بیشتر با java و C#آشنا هستند. همچنین ، دارت از sound null safety پشتیبانی می کند.
- معماری آن بر اساس برنامه نویسی واکنش گرا است که بسیار محبوب است. (از همان سبک React پیروی می کند)
- ویجت های rendering engine با کارایی بالا ارائه می دهد که جذاب ، سریع و customizable هستند
- با وجود ویجت ها، برنامه های Flutter ظاهر فوق العاده ای دارند
سازنده فلاتر کیست ؟
تیمی از گوگل Flutter را ساخت.
اما به عنوان یک پروژه open source ، هم گوگل و هم انجمن توسعه دهندگان Flutter در توسعه آن سهیم هستند.
مختصری از تاریخچه Flutter:
- فوریه 2018 ، کنگره جهانی موبایل – اولین نسخه بتا Flutter
- آوریل 2018 ، Google I/O – Flutter beta 2 release
- مه 2018 ، Google I/O – Flutter beta 3 release
- Flutter به 100 repository برتر GitHub می پیوندد
- ژوئن 2018 – Flutter Preview 1 release
- سپتامبر 2018 – Flutter Preview 2 release
- نوامبر 2018 – Dart 2.1 release
- دسامبر 2018 ، Google I/O – Flutter 1.0 release
- یک نقطه عطف مهم برای این فناوری ، از دسامبر 2018 ، Flutter آماده و stable برای تولید در نظر گرفته شده است
- فوریه 2019 ، کنگره جهانی موبایل – انتشار Flutter 1.2
- مه 2019 ، کنگره جهانی موبایل:
- Flutter 1.5 release
- Flutter برای نسخه پیش نمایش وب
- انتشار دارت 3
- جولای 2019 ، Flutter 1.7 release
- سپتامبر 2019 ، Flutter 1.9 release
- Flutter به طور مرتب توسعه یافته است و گوگل نسخه های جدیدتر خود را منتشر کرده است. جدیدترین نسخه آن 2.0 است و در Google I/O در ماه مه 2021 اعلام شد.
علاوه بر این ، Flutter 2.0.0 شامل صدها تغییر در پاسخ به بازخورد(feedback) توسعه دهندگان است.
Flutter دارای 188 درخواست pull فعال در GitHub (مه 2021) است ، که نشان می دهد انجمن توسعه دهندگان از آن استفاده می کنند و به بهبود آن کمک می کنند.
به طور خلاصه ، Flutter همچنان یک فناوری نوپا است.
با این حال ، با توجه به سرعت پیشرفت Flutter و محبوبیت بالای آن می توانیم با اطمینان بگوییم که باتوجه سنی که دارد بسیار پایدار و جاافتاده است.
کدام یک از برنامه های مشهور با Flutter ساخته شده اند؟
برنامه Xianyu توسط Alibaba (برنامه در App Store ، برنامه در Google Play) . Alibaba یکی از بزرگترین شرکت های تجارت الکترونیک در جهان است
برنامه Hamilton (برنامه در App Store ، برنامه در Google Play ، وب سایت) – برنامه رسمی Broadway Musical
برنامه Google Ads (برنامه در App Store ، برنامه در Google Play)
برنامه eBay Motors (برنامه در App Store ، برنامه در Google Play) – یک ابزار قدرتمند برای مشاهده ، خرید و فروش وسایل نقلیه ، به صورت مستقیم از موبایل مصرف کننده (consumers) است.
Stadia (برنامه در App Store ، برنامه در Google Play) – پلت فرم بازی Google ، کاربران می توانند در لپ تاپ ، رایانه رومیزی و موبایل بازی کنند.
Groupon (برنامه در Store App ، برنامه در Google Play). از Flutter برای کمک به صدها هزار تاجر برای پیگیری عملکرد کمپین ، مدیریت رضایت مشتری و دریافت پشتیبانی استفاده می کند.
Baidu Tieba (برنامه در App Store) – بزرگترین بستر ارتباطی چینی که توسط شرکت موتور جستجوی چینی Baidu میزبانی می شود.
Phillips Hue (برنامه در App Store ، برنامه در Google Play) – برنامه ای که نور چراغ ها و لوازم جانبی Hue را کنترل می کند.
برنامه Topline توسط Abbey Road Studios (برنامه در App Store ، برنامه در Google Play)
برنامهReflectly (برنامه در Store App ، برنامه در Google Play ، وب سایت)
React Native چیست؟
React Native یک framework اپلیکشن موبایل می باشد که Open Source است و از جاوا اسکریپت استفاده می کند.
چرا React Native ؟
- توسعه کراس پلتفرم
- ساخت برنامه های موبایل با استفاده از زبان جاوا اسکریپت
- توسعه برنامه های کاربردی برای Android و iOS با یک codebase
- استفاده از طراحی مشابه
لطفا توجه داشته باشید
- برنامه های ایجاد شده با React Native ، mobile web apps نیستند. همان بلوکهای سازنده اصلی UI را همانند اپلیکیشن iOS و آندروید استفاده میکند این بدان معناست که به جای ساختن در جاوا ، کاتلین یا سوئیفت ، شما با استفاده از جاوا اسکریپت و React همان بلوکهای سازنده را کنار هم قرار میدهید.
- React Native از کامپوننت هایی استفاده میکند که مشابه Flutter هستند.
چه کسی React Native را ایجاد کرد؟
شرکت FaceBook
مختصری از تاریخچه React Native:
تابستان 2013 ، React Native به عنوان یک پروژه داخلی فیس بوک آغاز شد
ژانویه 2015 ، کنفرانس React.js – نسخه پیش نمایش React Native 1
مارس 2015 ، کنفرانس F8 – راه اندازی رسمی React Native
فیس بوک React Native را اعلام کرد ، “برای استفاده آماده شده و در Github در دسترس است”
با نگاهی به موارد فوق ، دو چیز به طور قطعی مشخص است: React Native قدیمی تر از Flutter است و دارای انجمن بزرگتری است. ناگفته نماند که تیم فیس بوک زمان زیادی برای پایداری API و همچنین تمرکز بر رفع مشکلات اساسی داشته است.
و فراموش نکنیم – فیس بوک روی پیشرفت های قابل توجه دیگری نیز کار می کند:
- Lean Core – کاهش اندازه یک برنامه با انتقال component یا feature های اختیاری به مخازن(Repository) جداگانه (برای افزودن به برنامه در صورت نیاز)
- TurboModules – برای بهبود مدیریت ماژول های native
- React Native Fabric
چه برنامه های مشهوری با React Native ساخته شده اند؟
- Instagram (iOS, Android)
- Facebook (iOS, Android)
- Fb Ads Manager (iOS, Android)
- Pinterest (iOS, Android)
- Skype (iOS, Android)
- Tesla (iOS, Android)
- Bloomberg (iOS, Android)
- Wix.com (iOS· Android)
مزایا و معایب Flutter:
مزایای Flutter:
- ویژگی Hot reload = برنامه نویسی سریع
از نظر توسعه دهندگان ، Flutter توسعه ای پویاتر و سریعتر را ارائه می دهد. این ویژگی یکی از بزرگترین نکات در مورد Flutter است که توسط هر شرکت توسعه دهنده برنامه های موبایل مورد استقبال قرار گرفته است.
توسعه دهندگان می توانند تغییراتی را در codebase در حال اجرا ایجاد کنند و بلافاصله آنها را در برنامه ببینند. که در اصطلاح به آن Hot reload می گویند و معمولاً (میلی ثانیه) طول می کشد تا تغییرات نشان داده شود.
این ویژگی به تیم ها کمک می کند تا feature ها را اضافه کنند ، اشکالات را برطرف کرده و ایده های جدید را در یک لحظه آزمایش کنند.
- یک codebase ، دو پلتفرم موبایل (و بیشتر !)
با Flutter ، توسعه دهندگان می توانند فقط با یک پایگاه کد برای دو پلتفرم برنامه بنویسند و هر دو سیستم عامل iOS و Android را پوشش می دهند.
- تا 50 درصد تست کمتر
با توجه به اینکه یک برنامه مشابه در هر دو پلتفرم دارید ، فرایند تضمین کیفیت شما بسیار سریعتر خواهد بود زیرا کمتر تست می کنید.
ما تقریباً 50 درصد تست های خودکار کمتر می نویسیم زیرا می توانیم آزمایشهای یکسانی را برای اجرا در هر دو پلتفرم ایجاد کنیم و تقاضا برای تیم QA خود را کاهش دهیم.
با این وجود ، هنوز باید تستmanual، مشابه برنامه نویسی native اجرا کنید ، زیرا متخصصان QA شما باید هر دو برنامه را در هر پلتفرم ، با دست بررسی کنند.
- برنامه های سریعتر
برنامه های Flutter همواره سریع عمل می کنند . بدون اینکه هنگام Scroll ، هنگ کنند یا قطع شوند. چرا؟
Flutter از کتابخانه گرافیک Skia استفاده می کند. در این حال ، هر بار که View تغییر می کند ، UI دوباره ترسیم می شود.
بیشتر کارها روی GPU انجام می شود. به همین دلیل است که UI Flutter روان است و 60 فریم در ثانیه (فریم در ثانیه) deliver دارد.
با این حال ، باید در حین توسعه مراقب باشید تا باعث ترسیم مجدد المان های viewای که داده های آنها تغییر نکرده است ، نشوید.
ترسیم مجدد کل view به جای المان هایی که تغییر می کنند ، می تواند بر عملکرد و سرعت برنامه تأثیر بگذارد ، به خصوص اگر شما به بارگذاری منظم view نیاز داشته باشید ، به عنوان مثال برنامه کرونومتر
- Design هایی که کاربران شما به آن علاقه مندند.
Flutter از کامپوننت های native استفاده نمی کند. در عوض ، Flutter دارای مجموعه ای از ویجت های سفارشی خود است که توسط فریمورک موتور گرافیکی ارائه و مدیریت می شود. کاربران کامپوننت UI متفاوتی نسبت به برنامه های native خواهند دید ، اما این لزوماً یک نقطه ضعف نیست.
- UI مشابه ، حتی در دستگاه های قدیمی تر
برنامه های جدید حتی در سیستم های قدیمی iOS یا Android یکسان به نظر می رسند ، بنابراین هرگز نباید نگران support دستگاه های قدیمی باشید.
- مناسب برای MVP ها :
اگر نیاز دارید که یک MVP (Minimum Viable Product) (محصولی که در مقابل ریسک تولید ضریب بازگشت سرمایه بالایی دارد.) برای برنامه خود بسازید. مثلاً به عنوان ویترین برای سرمایه گذاران بالقوه ، Flutter بهترین گزینه است ، به ویژه اگر زمان کوتاه باشد.
معایب Flutter:
- وسعت انجمن(community) توسعه دهندگان:
گفته می شود، یک مزیت کلیدی برای React Native نسبت به Flutter ، توسعه دهندگان با تجربه تر و با تجربه تر است. علاوه بر این ، از نظر زبان های برنامه نویسی ، دارت حداقل به اندازه جاوا اسکریپت استفاده نمی شود ، حداقل در حال حاضر.
انجمن توسعه دهندگان برای آموزش مخاطبان خود و کسب تجربه بیشتر ، به زمان نیاز دارد.
با این حال انجمن Flutter به طور تصاعدی در حال رشد است.
- کتابخانه ها و پشتیبانی – چشمگیر ، اما نه به اندازه توسعه native
پشتیبانی گوگل از Flutter موثر بوده ، اما Flutter هنوز نوپاست. این بدان معناست که شما همیشه نمی توانید نیاز خود را در کتابخانه های موجود پیدا کنید ، بنابراین توسعه دهندگان ممکن است نیاز به ایجاد قابلیت های سفارشی خودشان داشته باشند ، که این امر به زمان نیاز دارد.
- پشتیبانی از ادغام مداوم
Flutter از پلتفرم های CI مانند Travis یا Jenkins پشتیانی نمی کند. بنابراین ، برای دستیابی به ساخت و تست خودکار ، توسعه دهندگان باید از اسکریپت های سفارشی استفاده کنند.
- احتمال خطر پلتفرم
اگرچه Flutter منبع باز(open source) است ، ولی چنانچه Google تصمیم بگیرد از پروژه کناره گیری کند ،این اتفاق فاجعه باری رخ خواهد داد. در این صورت ما نمی توانیم دنیایی را تصور کنیم که گوگل از Flutter دور می شود.
- سایز برنامه
برنامه های کاربردی نوشته شده در Flutter حجم بیشتری نسبت به برنامه های native دارند. با این حال ، تیم Flutter به دنبال کاهش حجم برنامه های ساخته شده هستند.
React Native – مزایا و معایب
مزایای React Native
- برنامه نویسی سریع = Fast refresh
تیم React Native ، در نسخه 0.61 ویژگی جدیدی به نام fast refresh را افزوده است که Live reload و Hot Reload را با هم به کار می برد.
- یک codebase ، دو پلتفرم موبایل (و بیشتر!)
جاوا اسکریپت هنگام نوشتن برنامه های چند پلتفرمی با به اشتراک گذاشتن کد با web apps به شما کمک می کند. این امر با ایجاد کامپوننت های abstractانجام می شود که می توانید آنها را در پلتفرم ها کامپایل کنید.
به عنوان مثال در پایین کتابخانه هایی را مشاهده می کنید که با آنها می توانید به طور همزمان کد را در پلتفرم هایی غیر از iOS و Android (از جمله برنامه های وب و دسکتاپ) ایجاد کنید:
- React Native for Web – از Android ، iOS و وب پشتیبانی می کند (توییتر از آن برای ایجاد Twitter Lite استفاده کرد)
- ReactXp – توسط تیم Skype برای پشتیبانی از Android ، iOS و وب توسعه یافته است. بعلاوه ، روی ویندوز 10 (UWP) کار می کند
- react-native-windows- توسط تیم مایکروسافت توسعه یافته و از همه دستگاه های پشتیبانی شده توسط ویندوز 10 (رایانه ها ، تبلت ها ، 2 در 1 ، ایکس باکس ، دستگاه های واقعیت ترکیبی و غیره) پشتیبانی می کند.
- استفاده از یک زبان بسیار محبوب به نام جاوا اسکریپت
جاوا اسکریپت را بسیاری از توسعه دهندگان به خوبی می شناسند (در حالی که دارت هنوز چندان شناخته شده یا زیاد مورد استفاده قرار نگرفته). و اگر توسعه دهنده ای هستید که زبانهای برنامه نویسی با حالت ایستا (statically type)را ترجیح می دهید ، حتی می توانید از TypeScript، زیرمجموعه جاوا اسکریپت استفاده کنید.
- آزادی انتخاب توسعه دهنده
با React Native توسعه دهندگان می توانند برنامه های کراس پلتفرم بسازند. نه بیشتر نه کمتر.
همچنین توسعه دهنده تصمیم می گیرد بر اساس الزامات پروژه و اولویت های خود ، از چه راه حل هایی می خواهد استفاده کند.
اگر توسعه دهنده ، Global State را انتخاب کند (نحوه ذخیره و مدیریت داده هایی که در بسیاری از کامپوننت های برنامه استفاده می شود) ، می تواند یک کتابخانه روتر را انتخاب کند یا بین جاوا اسکریپت و TypeScript انتخاب کند و همچنین می تواند تصمیم بگیرد که آیا ترجیح می دهد از یک کتابخانه UI سفارشی استفاده کند یا کتابخانه خود را بنویسد.
- بلوغ و پختگی نسبی
از انتشار رسمی React Native بیش از 5 سال می گذرد ، بنابراین تیم فیس بوک زمان زیادی برای پایداری API و همچنین تمرکز بر رفع و حل مشکلات داشته است. مانند کاهش حجم برنامه
- دارای یک انجمن فعال و گسترده
React Native دارای یک انجمن توسعه دهنده وسیع و گسترده است. نه فقط این ، بلکه تعداد بیشماری آموزش ، کتابخانه و فریم ورک UI دارد که یادگیری این فناوری را آسان می کند و همچنین توسعه سریع و آسانی دارد .
و اگرآن را با Repository ها، مقالات ، ابزارها و مطالب مربوط به فناوری های خاص مقایسه کنید ، می بینید که React Native بسیار بهتر از Xamarin ، Flutter یا Ionic می باشد.
علاوه بر این ، React Native بخشی از “خانواده React” است. در حالی که بسیاری از کتابخانه های آن، پلتفرم آگنوستیک هستند (مانند Formik ، React Router ، styled components) ، به این معنی که آنها در وب و موبایل کار می کنند.
همچنین Expo دسترسی به API های native را ساده می کند و راه حل های آماده ای برای ویژگی های خاص تلفن همراه دارد (به عنوان مثال ، push notification).
دومین کتابخانه AWS Amplify نام دارد. راه حلی که یکپارچه سازی با ویژگی های AWS ، را با پوشش دادن authentication ، ذخیره سازی ، push notification و analytics ساده می کند.
- یادگیری آسان برای توسعه دهندگان React
اگر سابقه توسعه وب دارید و قبلاً از React استفاده می کردید ، می توانید بدون نیاز به یادگیری کتابخانه های جدید به راحتی با React Native کار کنید. می توانید از همان کتابخانه ها ، ابزارها و پترن ها استفاده کنید.
- تا 50 درصد تست کمتر
ما تقریباً 50 درصد تست های خودکار را کمتر می نویسیم زیرا می توانیم آزمایشهای یکسانی را برای اجرا در هر دو پلتفرم ایجاد کنیم و تقاضا برای تیم QA خود را کاهش دهیم. که به نظر همانند توسعه برنامه Flutter می باشد.
معایب React Native
- Native نیستند
- کامپوننت های کمتر از پیش ساخته شده
React Native فقط از کامپوننت های اصلی از پیش آماده شده پشتیبانی می کند (بسیاری از آنها با یک پلت فرم از پیش آماده شده سازگار هستند ، مانند button و loading و indicator و slider).
- آزادی انتخاب توسعه دهنده
هنگامی که توسعه دهنده یک پروژه جدیدی ایجاد می کند ، باید تصمیم بگیرد که از کدام پکیج navigation و همچنین از کدام global state management استفاده کند.
درک تفاوت های جزیی هر راه حل ، ممکن است زمان زیادی بگیرد تا در ادامه ، بهترین راه حل ها برای پروژه تصمیم گیری شود.
- تعداد زیادی پکیج رها شده
React Native کتابخانه های زیادی دارد. متأسفانه ، بسیاری از آنها یا کیفیت پایینی دارند، یا کلا رها شده اند.
توصیه می شود برای جلوگیری از استفاده از پکیج های رها شده ، تعداد issues و دفعات commits در یک مخزن(Repository) را بررسی کنید.
- رابط کاربری (UI) ضعیف
اینکه React Native از کامپوننت هایnative در پشت پرده استفاده می کند باید به شما اطمینان دهد که پس از هر بار به روزرسانیUI سیستم عامل، کامپوننت برنامه شما نیز فوراً upgrade می شود.
این عمل می تواند UI برنامه را به هم بریزد اما احتمال آن بسیار کم است.
اگر به روزرسانی ها تغییرات خاصی را در API کامپوننت های native ایجاد کنند ، می توانند حتی خطرناک تر شوند. که چنین رویدادی بسیار کم اتفاق می افتد.
در حالی که در Flutter (به لطف نحوه بازسازی کامپوننت های native فریم ورک) ، UI برنامه بسیار پایدارتر است.
- برنامه ها بزرگتر از برنامه های native هستند
اپلیکیشن های نوشته شده با React Native باید بتوانند کد جاوا اسکریپت (ماشین مجازی جاوا اسکریپت) را اجرا کنند. اندروید به طور پیش فرض این قابلیت را ندارد . به این معنی که برنامه ها باید دارای کتابخانه ای باشند که از کد جاوا اسکریپت پشتیبانی می کنند ، در نتیجه برنامه هایی بزرگتر از برنامه های nativeاندرویدی هستند.
برنامه های iOS ساخته شده با React Native این مشکل را ندارند ، اما هنوز هم معمولاً بزرگتر از برنامه های native هستند. خبر خوب؟ همانطور که قبلاً اشاره کردیم ، تیم React Native در حال کار بر روی کاهش حجم برنامه های خود هستند.
پیش بینی آیندهFlutter و React Native
شرکت های بیشتر و بیشتری جذب Flutter می شوند. به هر حال ، ما شاهد پیشرفت ماهانه در SDK Flutter هستیم . به علاوه ، انجمنی همیشه مفید و فعال دارد . همچنین ، Flutter ما را قادر می سازد نه تنها برنامه های تلفن همراه بلکه برنامه هایی را برای وب و دسکتاپ ایجاد کنیم.
با توجه به شرکت های برجسته ای مانند Alibaba که در حال حاضر از Flutter استفاده می کنند ، آینده برای فلاتر امیدوار کننده به نظر می رسد.
در مورد React Native ، تیم فیس بوک تمام تلاش خود را برای بهبود پشتیبانی از کاربران React Native و داشتن انجمنی گسترده تر انجام می دهد.
نتایج واقعی چنین پیشرفت هایی عبارتند از:
- Hermes – یک موتور جاوا اسکریپت open source می باشد که برای برنامه های موبایل بهینه شده است و زمان تعامل را بهبود می بخشد و حجم برنامه و استفاده از حافظه را کاهش می دهد.
- تغییرات بزرگ در نسخه 60
- مدیریت وابستگی iOS با استفاده از CocoaPods به طور پیش فرض آسان تر شده است ،
- می توانید React Native را به AndroidX منتقل کنید ،
- می توانید ویژگی های اختیاری را به عنوان بخشی از فرآیند core process. استخراج کنید.
ایجاد یک محیط باز برای بحث در مورد React Native گامی مهم و نشانه ای برای پیشرفت مداوم و سیگنالی برای آینده روشن فناوری است.
با توجه به اینکه React Native دارای چنین ثابتی در بازار است و در مسیر توسعه مستمر قرار دارد، بعید است که به زودی شاهد رها شدن آن باشیم
با این وجود ، Flutter یک رقیب سرسخت برای React Native است.
خلاصه
چه زمانی از React Native و چه زمانی از Flutter استفاده کنیم؟
تحویل به موقع پروژه ها یکی از مهمترین مسایل در توسعه برنامه های موبایل و وب است.
ماهیت کراس پلتفرم React Native و Flutter زمان را برای ارائه به بازار کاهش می دهد. بعلاوه ، کتابخانه های third-party و کامپوننت های آماده ، آنها را برای ساختن برنامه شما کارآمدتر می کند.
همچنین ، با Flutter و React Native توسعه سریعی خواهید داشت و می توان هزینه های پروژه را نیز کاهش داد.
… و اینها دلایل کلیدی هستند که شما باید چهارچوب پروژه خود را در نظر بگیرید. و بررسی کنید کدام راه حل ارائه بهتر ارائه می دهند.
سریعترین زمان توسعه؟ یا با ایده برنامه شما بیشتر مطابقت دارد؟
خوب ، این بستگی به ویژگی های پروژه شما و میزان مهارت های تیم شما دارد.
آیا توسعه دهندگان شما دارت را می شناسند؟ اگر بله ، برنامه نویسی با Flutter انتخاب شما است.
آیا توسعه دهندگان شما به JavaScript مسلط هستند؟ اگر بله ، React Native انتخاب منطقی به نظر می رسد.
آیا می خواهید GUI برنامه خود را با استفاده از کامپوننت های UI native بسازید؟ اگر بله ، React Native را انتخاب کنید.
آیا طراحی برند اولویت اول شماست؟ اگر بله ، پیشنهاد می کنیم Flutter را انتخاب کنید.
به یاد داشته باشید که هر برنامه متفاوت است ، بنابراین شما باید هر یک را بر اساس ویژگی های خود در نظر بگیرید. همیشه در نظر داشته باشید که پروژه خود را با یک تیم توسعه دهنده مجرب مورد بحث قرار دهید: افرادی که با مهارتهای کافی و متنوع در زمینه توسعه کراس پلتفرم می توانند رویکردهای مختلف را در نظر بگیرند مانند اینکه از برنامه نویسانی که فقط یک فریم ورک می دانند ، مشاوره بگیرید. به احتمال زیاد شما را به استفاده از آن راهنمایی می کند.
از این موضوع اطمینان داشته باشید که هر دو) Flutter و (React Native فناوری های بسیار خوبی هستند. آنها از محبوبیت زیاد و اعتماد پایدار بهره مند هستند.
دیدگاهتان را بنویسید