در سال 2020 از کدوم تکنولوژی کراس پلت فرم استفاده کنیم؟

React Native VS Ionic VS Flutter
React Native VS Ionic VS Flutter


در سال 2020 از کدوم تکنولوژی کراس پلت فرم استفاده کنیم؟

در پروژه ای که اخیرا مشغول کار بر روی اون هستم باید برای توسعه کراس پلت فرم به روی وب ، اندروید و ای او اس با یک کد بیس، تکنولوژی رو انتخاب می کردم. خب انتخاب تکنولوژی همیشه اونقدر ها که به نظر میرسه ساده نیست. در حقیقت سخت ترین بخش تصمیم گیری برای انتخاب تکنولوژی برقرار تعادل بین منابعی که در اختیار دارید (اعم از: زمان، توانایی افراد تیم، کدهایی که قبلا نوشته شده و میشه استفاده مجدد کرد) و بهینه بودن قابلیت های تکنولوژی انتخابی هست.

یعنی ممکنه همیشه بهترین تکنولوژی در یک حوزه، بهترین راه حل شما نباشه. خب در طی بررسی های انجام شده سه تا کاندید رو انتخاب کردم: Ionic- React Native - Flutter

IONIC خوب بود ولی دو تا مسئله داشت اول اینکه خروجی تولید شده Native نبود. دوم اینکه علارغم ادعایی که داشت مبنی بر اینکه با فریم ورکهایی مثل React و Angular میشه باهاش کد زد، سربار یادگیری نسبتا زیادی داشت کارها رو به روش خودش انجام میداد نه به روش توصیه شده توسط هر یک از این فریم ورک و به این معنی زمان بیشتر برای یادگیری و احتمال وقوع مشکلات پیش بینی نشده بود. پسIONIC رو کنار گذاشتیم.

تکنولوژی بعدی فلاتر بود. خب Flutter از هر جهت ایده عال بنظر می رسید. خروجی موبایل و وب و دسکتاپ و تولید کد نیتیو برای هر پلت فرم با یک کد بیس. به لحاظ محبوبیت در حال رشد و نزدیک به React Native . بود و بر خلاف React Native که از معماری Bridge برای تعامل با کامپوننت های نیتیو استفاده میکنه در زمان اجرا و عملا کد نیتیوی تولید نمیکنه، فلاتر واقعا خروجی نیتیو تولید میکنه. اما فلاتر دو مشکل اساسی داشت، همونطور که گفتم سختی انتخاب تکنولوژی برقراری تعادل بین منابعی که دارید و میزان ایده عال بودن یک تکنولوژی نسبت به پروژه شماست.

مشکل اول اینکه ، تیم ما قبلا React Native کار کرده بود و دانش جاوااسکریپتی داشت. برای ورود به Flutter باید Dart یاد می گرفت.خب این یعنی زمان بیشتر و سرعت کمتر. این تکنولوژی در سال 2018 مطرح شده و مشکل دوم ریسک جدید بودن فلاتر بود.هر چقدر هم که توسعه دهندگان قول پشتیبانی قوی رو بدن ، نمی تونستیم خیالمون رو از رویارویی با مسائل پیش بینی نشده در یک پروژه جدی راحت کنیم. باید این سوال رو از خودمون می پرسیدم React Native چقدر بدتر از Flutter هست؟ آیا به اندازه ای هست که هزینه یادگیری و ریسک استفاده از اون رو بپردازیم؟ در نهایت ما به این نتیجه رسیدیم که با توجه به کتابخونه های آماده React Native از پروژه های قبلی، مهارت و تسلط تیم بر روی این تکنولوژی و کارایی نسبتا خوبش علارغم مشکلاتی که داره و در مجموع منابعی که در اختیار داریم از این تکونولوژی استفاده کنیم و استفاده از Flutter رو به زمان مناسب تری موکول کنیم. هر چند خروجی Pwa یکی از موارد مهم برای ما بود که React بصورت رسمی ازش پشتیبانی نمیکنه اما خب راه حل های ثانویه براش وجود داره.

در نهایت مثل همیشه من هیچ نسخه جامعی ندارم که برای همه تیم ها تجویز کنم، با توجه به انتظارات و منابعی که در اختیار دارید و نقاط ضعف و قوت هر تکنولوژی یک حالت متعادل وجود داره که باید ازش استفاده کرد. البته که من همیشه از ریسک ورود به تکنولوژی های جدید استقبال می کنم به شرطی که بتونم هزینه این ریسک رو بپردازم.