مقایسه وبررسی React Native vs Flutter vs Ionic vs NativeScript - قسمت دوم

در قسمت اول این مقایسه یک معرفی مختصری برای این 4 فناوری ساخت اپلیکیشن های گوشی تلفن همراه داشتیم . در ادامه مقایسه ای برای این 4 گزینه انجام میدهیم.# "یک بار بنویس ، از همه جا استفاده کن"با استفاده از این متریک (metric) ، می خواهیم کشف کنیم که چه مقدار از کدی که می نویسیم برای هر دو سیستم عامل قابل استفاده مجدد است.اشتباه نکنید - تمام ایده های پشت این همه فناوری ها استفاده مجدد از کد و استفاده از یک زبان است اما ممکن است شما نیاز به نوشتن کد های مختلف (علیرغم استفاده از همان زبان) برای سیستم عامل های مختلف داشته باشید.این می تواند مورد نیاز برای قرار دادن عناصر متفاوت باشد یا به دلیل نیاز به استفاده از مؤلفه های مختلف UI ، زیرا همه عناصر UI در هر دو سیستم عامل وجود ندارند.ما نتایج متفاوتی می بینیم.Ionic: قابلیت استفاده مجدد بسیار جذاب! مفهومش این است که "برنامه وب " تضمین می کند که می توانید به راحتی از کد خود استفاده مجدد کنید - شما در پایان فقط یک برنامه وب پیچیده می سازید. کتابخانه مؤلفه های عالی اجزای سازگار (یعنی به طور خودکار برای سکویی که برنامه در آن اجرا شده است) طراحی شده است.Flutter: برای استفاده مجدد بسیار عالی است. ویجت هایی که ارسال می شود اغلب با سکوی زیرین سازگار نیست ، درعوض شما به طور پیش فرض از Material Design در هر دو سیستم عامل استفاده می کنید. تیم Flutter با وجود این ، اجزای سبک و iOS بیشتری را ارائه می دهد. می توانید بدانید که بر روی کدام پلتفرم کار می کنید و ابزارک ها را به صورت دستی تعویض می کنید اما این کار کمی بیشتر از آنچه که توسط Ionicلازم است انجام میدهد. اگر به یک ظاهر طراحی مجدد خاص برای پلتفرم نیاز دارید ، می توانید موقعیت Flutter را در کشویی به سمت راست حرکت دهید.NativeScript: بسیار شبیه به فلوتر است ، اما به طور پیش فرض در یک سیستم سبک کاربرد ندارد. بسیاری از مؤلفه ها به طور خودکار با معادل های بومی خود کامپایل می شوند و بنابراین نیازی به طراحی مجدد ندارند (مگر اینکه بخواهید). مؤلفه هایی که در هر دو سیستم عامل وجود ندارند باید توسط شما مدیریت شوند (یعنی شما باید تصمیم بگیرید که کدام مؤلفه را برای ارائه بر روی کدام سیستم عامل قرار دهید). به طور کلی ، کد می تواند دوباره مورد استفاده مجدد قرار گیرد.React Native: همچنین به صورت پیش فرض کامپایل می شود اما فقط یک مجموعه اصلی از اجزا را برای شروع فراهم می کند. شما باید بیشتر آنها را خودتان سبک داده و طراحی کنید ، از این رو کار بیشتری برای دستیابی به سبک های مناسب در هر دو سیستم عامل لازم است. به طور کلی ، کد می تواند دوباره مورد استفاده قرار گیرد (از آنجا که شما هنوز هم فقط از یک زبان استفاده می کنید و کتابخانه هایی مانند Redux نیازی به تنظیم ندارند).زبانهای بومی و اصلی: بدیهی است که شما نمی توانید از Javaبا Android برای توسعه IOS (یا روش دیگر) استفاده کنید. بنابراین ، قابلیت استفاده مجدد کد در سیستم عامل ها در اینجا وجود ندارد.# "یک بار بیاموز ، همه جا بنویس"این صداهای متریک (metric sounds) شبیه به قبلی است اما در واقع به معنای چیزی کاملاً متفاوت است. حتی اگر مجبور باشید برخی از کد ها را بر روی سکوی زیرین تنظیم کنید ، سؤال این است: این تنظیم چقدر پیچیده است؟ آیا برای سیستم عامل های مختلف باید ویژگی های مختلف زبان را یاد بگیرید؟از نظر متریک ، به نظر اساساً دو موضوع داریم. همه گزینه ها به جز استفاده از زبان های بومی فقط باید یک زبان یاد بگیرند. این برای هر دو راه حل مانند Ionic صحیح است - که از رویکرد "استفاده از یک کد پایه برای هر دو سیستم عامل" استفاده می کند - و گزینه های دیگری مانند React Native ، جایی که ممکن است مورد نیاز باشد.# کتابخانه پیش استایل ها# Rich pre-styled Component Libraryساخت UI های زیبا چقدر آسان است؟ آیا شما مجبورید بسیاری از مؤلفه ها (عناصر UI) را به تنهایی بسازید و سبک دهید یا یک مجموعه غنی از پیش ساخته ها داشته باشید؟ آیا قطعات به طور خودکار با بستر زیرین سازگار هستند؟در این متریک گزینه ها تفاوت زیادی دارند!: Ionic در هسته آن مجموعه بزرگی از اجزای از پیش ساخته (و از پیش استایل) است. کامپایلر / ابزار دستیابی به برنامه بومی نیز بخشی از بسته یونیک (از طریق CLI آن است) اما از بسته های دیگری مانند Cordova یا Capacitor استفاده می کند. مؤلفه های ارائه شده توسط Ionic به طور خودکار با پلت فرم برنامه اجرا می شود و بنابراین ، Ionic ایجاد برنامه های زیبا و بومی را به یک نسیم تبدیل می کند!: Flutter با مجموعه ای کامل از ابزارک های داخلی ساخته می شود. اینها بیشتر از ابزار Material Design استفاده می کنند ، برخی از ابزارک های سبک کوپرتینو (به سبک iOS) نیز وجود دارند. بیشتر و بیشتر مؤلفه های سبک iOS اضافه می شوند. با وجود همه این ابزارک ها ، شما می توانید به سرعت و بدون ایجاد یک ظاهر طراحی دستی بیش از حد ، رابط کاربری زیبایی ایجاد کنید. فقط در صورت نیاز به ظاهر متفاوت برای سیستم عامل های مختلف ، به برخی از تلاش ها نیاز است زیرا ویجت ها به طور خودکار سازگار نیستند.: NativeScript با مجموعه ای مناسب از عناصر UI که مجموعه اصلی عناصر مورد استفاده شما را تشکیل می دهد ، حمل می شود. همه مؤلفه های طاقچه در آن گنجانده نشده است بلکه اجزای سازنده آن با سازگاری با سکوی زیرین ارسال می شود. با این وجود برخی از یک ظاهر طراحی دستی به احتمال زیاد مورد نیاز است ، ممکن است نیاز به ابزارهای اضافی توسط شما ایجاد شود. مطمئناً جامع تر از Ionic یا Flutterاست.React Native: مجموعه مناسبی از قطعات داخلی ساخته شده است اما بسیاری از آنها باید توسط شما طراحی شوند. در عوض ، آنها کاملاً سازگار نیستند - دقیقاً مانند Flutter - شما برای هر دو سیستم عامل گزینه دیگری بدست می آورید. این امر نیاز به تنظیماتی در کد شما دارد ، جایی که شما باید ابزارکها را به صورت مشروط انتخاب کنید ، استفاده کنید و سبک دهید.زبانهای بومی: همانطور که انتظار دارید ، هر دو زبان / چارچوب ها با مجموعه ای غنی از عناصر UI بومی که می توانید برای ساخت رابط های کاربری خود استفاده کنید ، ارسال می شوند. بدیهی است ، آنها سازگار نیستند زیرا شما UI خود را فقط برای یک سکوی همزمان ایجاد می کنید. اما اجزاء سبک های پیش فرض پلتفرم را ارائه می دهند و البته می توان آنها را نیز سفارشی کرد.# اکوسیستم / کتابخانه های شخص ثالثاکوسیستم چگونه به نظر می رسد؟ آیا یافتن راهنمایی آسان است (در مورد Stackoverflow و غیره) و آیا کتابخانه های شخص ثالث به اندازه کافی در دسترس هستند تا بتوانید ویژگی دیگری را که برنامه شما به آن نیاز دارد اضافه کنید؟: Ionic برای منطق خود از جاوا اسکریپت استفاده می کند - و در حالی که می توانید از آن با هر چارچوب (یا خیر) JavaScript استفاده کنید ، پشتیبانی ویژه خوبی را برای Angular ارائه می دهد. بنابراین ، شما از این اکوسیستم ها بهره مند می شوید. و جاوا اسکریپت و همچنین اکوسیستم Angular بسیار زیاد است! هزاران موضوع در مورد Stackoverflow و بسته های npm به شما کمک می کنند تا مشکلات خود را حل کنید.Flutter: شاهد رشد شگرف است! شما در مورد کتابخانه ها و بسته های شخص ثالث (بر روی سیستم عامل خود) بحث های بسیار زیادی می کنید. علی رغم اینکه نسبتاً جدید است ، اما کاملاً بالغ بوده و دارای اکوسیستم مناسبی است.: NativeScript کمی عقب مانده است. این در واقع یک SDK / چارچوب عالی است اما به نوعی ، تا کنون به طور کامل از بین نرفته است. اما به نظر می رسد حداقل در حال به دست آوردن کشش است و بیشتر موضوعات Stackoverflow و بسته های شخص ثالث را پیدا می کنید. علاوه بر این ، ابتکارات جدید مانند Nativescript-Vue نشان می دهد که جامعه بسیار فعال است و همچنین به شما امکان می دهد از ساختاری غیر از React و Angular برای ساختن برنامه تلفن همراه بومی خود استفاده کنید.React Native: این محبوب ترین راه حل برای ساخت برنامه های بومی تلفن همراه با JavaScriptاست. حداقل وقتی گزینه های دیگری را مشاهده می کنید که واقعاً برنامه شما را با کد بومی کامپایل می کنند. از JavaScript و Reactاستفاده می کند ، از این رو شما آن اکوسیستم ها را در دسترس دارید. علاوه بر این ، React Native به خودی خود دارای یک اکوسیستم و جامعه کاملاً پر جنب و جوش است ، از این رو موضوعات زیادی را در Stackoverflow و بسیاری از بسته های شخص ثالث مشاهده می کنید که ویژگی های از دست رفته را اضافه می کنند. نکته منفی این است که شما اغلب باید به اکوسیستم تکیه کنید ، زیرا تنها ویژگیهای اصلی در خود React Native گنجانده شده است.زبانهای بومی: این زبانها بسیار محبوب هستند و بنابراین Stackoverflow با موضوعات روی آنها منفجر می شود. کتابخانه های زیادی را پیدا می کنید که می توانید از آنها استفاده کنید و به همین دلیل احتمالاً مسئله ای را پیدا نمیکنید که قابل حل نباشد.منبع: https://www.academind.comتوضیح : من مترجم نیستم و با کمک گوگل جهت درک کلی مقاله و کمی تغییرات این مطالب را گردآوری کردم لذا امکان دارد برخی جاها آن شیوایی و مفهوم را نرساند که بابتش پیشاپیش عذرخواهی میکنم