منبع این پست در آخر ذکر شده است
امروزه توسعه اپلیکیشنها به صورت چند-سکویی یکی از موضوعات بسیار پرطرفدار است. درک چرایی این موضوع نیز بسیار ساده است. شما میتوانید با استفاده از یک کدبیس هم برای پلتفرم آندروید و هم برای iOS اپلیکیشن تولید کنید. این روند بسیار سریعتر از حالت نیتیو خواهد بود و همچنین هزینه بسیار کمتری را در پی خواهد داشت. با در نظر گرفتن چنین روندی، تا به حال فریمورکها و ابزارهای مختلفی را ایجاد کردهاند که به ما در انجام چنین کاری کمک میکنند. ریاکت نیتیو یکی از گزینههای قدرتمند در این زمینه است، اما در حال حاضر رقیب جدیدی برای آن به وجود آمده که باعث میشود موضوع انتخاب بین این دو مورد کمی چالش برانگیز شود.
اگر شما نیز بر سر این دو راهی ماندهاید که کدام مورد میتواند گزینه بهتری برای شما باشد، ما این مطلب را آماده کردهایم تا به شما مقایسه دقیقی را ارائه دهیم.
ریاکت نیتیو در سال ۲۰۱۵ ظهور پیدا کرد. این فریمورک متن باز است و توسط فیسبوک پشتیبانی میشود. تا به حال نیز اپلیکیشنهای مختلفی با استفاده از ریاکت نیتیو ساخته شده که از مهمترین آنها میشود به اینستاگرام و اسکایپ اشاره کرد.
ممکن است شما در این مدت نامی از فلاتر نشنیده باشید، چرا که فلاتر در سال ۲۰۱۷ عرضه شد اما نسخه پایدار آن در سال ۲۰۱۸ منتشر شد. این فریمورک توسط گوگل ساخته شده و پشتیبانی آن نیز توسط گوگل انجام میشود. فلاتر متن باز است و به شما اجازه میدهد تا بتوانید اپلیکیشنهای مبتنی بر آندروید، iOS و سیستم عامل جدید گوگل یعنی Fuchsia را توسعه دهید.
هر دوی این ابزارها در مواردی مشترک هستند:
حال بیایید در ارتباط با تفاوتهای اصلی این دو مورد صحبت بکنیم:
در ارتباط با ریاکت نیتیو شما میتوانید به خوبی از APIهای محلی آندروید و iOS استفاده بکنید. البته ممکن است تمام این موارد به صورت رسمی پشتیبانی نشود، اما ابزارهای مختلفی وجود دارد که این دسترسی را امکان پذیر میکند.
از طرفی دیگر فلاتر با وجود آنکه بسیار از ریاکت نیتیو جوانتر است، اما پشتیبانی بسیار خوبی از اکثر سختافزارها میکند و APIهای متفاوتی را پشتیبانی میکند. اما از آنجایی که فلاتر اول راه است، ممکن است بعضی از APIها در مرحله توسعه باشند و هنوز نسخه پایداری از آنها منتشر نشده باشد. این بدان معناست که ممکن است در برخی موارد با مشکلاتی مواجه شوید. ( البته با توجه به مقداری قدیمی بودن این مقاله این مورد یعنی api ها در فلاتر پیشرفت بسیار بسیار زیادی داشته )
اگر از ریاکت نیتیو استفاده بکنید، شما باید با زبان جاوااسکریپت آشنایی داشته باشید. زبانی که توسط بیشتر برنامهنویسان مورد علاقه قرار گرفته و بسیار محبوب است.
برای فلاتر شما باید با استفاده از زبان دارت برنامهنویسی بکنید. دارت نسبت به جاوااسکریپت از محبوبیت بسیار کمتری برخوردار است اما میشود منابع آموزشی نسبتا زیادی را برای دارت نیز پیدا کرد. اگر شما یک توسعه دهنده زبانهایی مانند جاوا/کاتلین باشید یادگیری دارت برایتان بسیار راحت خواهد بود.
زمانی که به موضوع کارایی میرسیم ممکن است نتایج برایتان تعجب آور باشد. در ریاکت نیتیو از آنجایی که از جاوااسکریپت استفاده میشود، برای رندر نهایی پروژه از یک پل برای تبدیل کردن جاوااسکریپت به کدهای نیتیو استفاده میشود.
اما از طرفی دیگر فلاتر به چنین پلی نیاز ندارد. چرا که تمام کامپوننتها به صورت مستقیم آدرسدهی میشوند. به همین دلیل کارایی در اپلیکیشنهای مبتنی بر فلاتر بسیار بهتر است. البته این موضوع زمانی خود را نشان میدهد که شما بخواهید یک اپلیکیشن بزرگ را توسعه دهید، در چنین حالتی فلاتر سریعتر عمل میکند.
یکی از مهمترین تفاوتها در این قسمت است. ایجاد رابط کاربری با استفاده از ریاکت نیتیو به این معناست که شما باید به فکر توسعه یکسری کامپوننتهای نیتیو باشید. البته شکل ظاهری تمام کامپوننتها براساس پلتفرمی که در حال توسعه آن هستید، سازگار است. اما المانهای رابط کاربری ریاکت نیتیو ممکن است مشکلات کارایی را نیز ایجاد بکند. در کنار این، شما گاهی اوقات باید از کتابخانههای متفاوتی که لزوما استاندارد نیستند نیز استفاده بکنید.
فلاتر اما رویکرد کاملا متفاوتی را در پیش میگیرد. در فلاتر ما با ویجتهایی انحصاری با قابلیت شخصیسازی شدن سر و کار داریم:
این رویکرد اجازه میدهد که رابط کاربری شما قابلیت شخصیسازی بسیار بالاتری داشته باشد و در نهایت توسعهدهندگان آزادی بسیار بیشتری را در پیادهسازی رابط کاربریشان داشته باشند. این موضوع باعث میشود که کارایی بالاتری در اپلیکیشن شما ایجاد شود.
البته این رویکرد برای Cupertino چندان بالغانه عمل نکرده است و در حال حاضر نیز با مشکلات و کمبودهایی همراه است که باید حل شوند. ( البته با توجه به مقداری قدیمی بودن این مقاله تقریبا Cupertino به بلوغ خوبی رسیده است )
توسعهدهندگان ریاکت نیتیو ابزارهای بسیار زیادی برای تست کردن اپلیکیشنشان دارند. با این حال زمانی که بخواهید در ارتباط با رابط کاربری تستهایی را پیاده سازی بکنید همه چیز به سادگی پیش نخواهد رفت.
از طرفی دیگر برای فلاتر نیز تستینگ خوبی پیادهسازی نشده است. به صورت کلی روال تستینگ آنچنان باید و شاید در هر دو پلتفرم با مشکلاتی همراه است اما ریاکت نیتیو در این رابطه بهتر عمل میکند.
از آنجایی که ریاکت نیتیو برای مدت بیشتری در این حوزه حضور داشته است، مطمئنا برنده این قسمت خواهد بود. ریاکت نیتیو تقریبا در هر جایی که از جاوااسکریپت پشتیبانی میشود، قابلیت کد نوشتن را دارد. از طرفی دیگر فلاتر توسط ابزارهای محدودتری پشتیبانی میشود.
یکی دیگر از مزیتهای ریاکت نیتیو نسبت به فلاتر، میزان پشتیبانی شدن آن توسط جامعه کاربران است. ریاکت نیتیو در گیتهاب ۶۸ هزار ستاره، ۱۷۰۰ مشارکت کننده و ۱۴۳۰۰ کامیت دارد، در حالیکه فلاتر ۳۶ هزار ستاره، ۲۳۰ مشارکت کننده و ۱۱۷۰۰ کامیت دارد.
برای ریاکت نیتیو ابزارهای بسیار زیادی وجود دارد، به همین دلیل روال توسعه شما بسیار سریعتر و آسانتر خواهد بود. اما فلاتر از چنین ویژگی بهره نمیبرد و پیدا کردن ابزارهای غیر رسمی بسیار سخت است.
البته در نظر داشته باشید که فلاتر تمام این موارد را تنها در یک سال بدست آورده که خود این موضوع بسیار مهم است.
هیچ فریمورکی که مشکلی نداشته باشد وجود ندارد. حتی اگر تمام ویژگیهای هر کدام را با هم مقایسه کنیم، باز هم انتخاب بین این دو مورد به نیازمندیهای شما بستگی خواهد داشت.
ریاکت برای پروژه شما خوب خواهد بود اگر:
فلاتر برای پروژه شما خوب خواهد بود اگر:
فلاتر در حال حاضر واقعا جوان است، شاید به همین دلیل باشد که برندهای مختلفی از آن استفاده نمیکنند. فلاتر نیاز دارد که در مدت زمانی تست شده و بهبود یابد. بنابراین اگر شما میخواهید در سریعترین زمان ممکن اپلیکیشنتان را در سال ۲۰۱۹ ایجاد کنید، ممکن است ریاکت نیتیو انتخابی بهتر باشد. اما اگر آینده را در دست کارایی بهتر ببینیم، مطمئنا فلاتر میتواند انتخابی بهتر باشد.
البته موضوع دیگری که فلاتر را به بهترین گزینه تبدیل میکند این است که در ری اکت نیتیو بدلیل اینکه بسیاری از پکیج ها توسط دیگران توسعه داده میشود در یک پروژه شما با مشکلات ریز و درشتی مواجع خواهید بود . اما در فلاتر اینگونه نیست و شما با اطمینان بیشتری میتوانید کد اپلیکیشن خود را آمااده کنید