به طور معمول، برنامه های Android در جاوا تولید می شوند و برنامه های iOS به صورت Swift و Objective-C نوشته می شوند. با این وجود ، ابزار جایگزین دیگری نیز وجود دارد که به جای آن می توان از آنها استفاده کرد. Xamarin ، React Native و Ionic نمونه های رایج از چنین ابزارهایی هستند. هدف آنها چیست؟ چه چیزی آنها را متفاوت می کند؟
اغلب نیاز به ایجاد برنامه مشابه برای iOS و Android داریم. گاهی اوقات شما همچنین نیاز به پشتیبانی از سیستم عامل های دیگر مانند Windows Phone دارید ، اما در اینجا ما فقط روی iOS و Android تمرکز خواهیم کرد.
یکی از راه حل ها توسعه دو برنامه کاملاً جداگانه است: یکی در جاوا برای اندروید و دیگری در Swift یا Objective-C برای iOS. این رویکرد دارای مزایای آن از قبیل:
1-دریافت ویژگی های جدید از سیستم عامل مورد نظر و شتیبانی آن تا زمانی که این سیستم عامل وجود دارد.
2-مطابقت با سیستم عامل مورد نظر و دارای UI و UX کاملا نیتیو. و اینکه تعامل کاربر با این برنامه بیشتر است.
با این حال ، این رویکرد یک نقطه ضعف جدی دارد: شما باید همان دو کد را دو بار بنویسید! اگر دو توسعه دهنده مختلف برنامه های iOS و Android را ایجاد کنند ، شرایط بدتر می شود زیرا احتمالاً دو نفر ویژگی مشابه را با کمی تفاوت متفاوت پیاده سازی می کنند.
Xamarin ، React Native و Ionic این مسئله را برطرف کرده و ابزارهای قدرتمندی را برای رسیدن به یک هدف ارائه می دهند: استفاده از یک پشته فن آوری برای توسعه برنامه های iOS و Android. به نظر می رسد این ایده ساده است ، اما دارای معایبی است:
-توسعه دهنده نیازی به یادگیری دو فناوری کاملاً متفاوت ندارد. البته آنها هنوز هم باید از ویژگی ها و محدودیت های هر پلتفرم بدانند ، اما نیازی به نوشتن به دو زبان مختلف و طراحی GUI با استفاده از ابزارهای مختلف نیست.
-پایه کد به اشتراک گذاشته شده اجازه می دهد تا از کدگذاری بسیار زیاد استفاده کند کدی که برای هر دو برنامه کاربردی مانند منطق کسب و کار ، شبکه سازی و غیره معمول است را می توان در ماژول های خود جدا کرد ، و شما هنوز فرصتی برای ایجاد یک رابط کاربری سفارشی برای هر پلتفرم و یا حتی ساخت یک رابط کاربری با یک بار از دست نمی دهید. برخی از صفات خاص برنامه اضافه شده است.
-هنوز ممکن است دو یا چند توسعه دهنده مشغول کار روی برنامه باشند و کسی که iOS را بهتر می شناسد قطعات خاص iOS را توسعه می دهد ، کسی که Android را بهتر می شناسد کارهای Android را انجام می دهد و هرکدام از آنها می توانند کارهای مستقل از پلتفرم را انجام دهند. همانطور که مطالب مشترک یک بار نوشته شده است ، دیگر فرصتی برای ایجاد ناسازگاری بین سیستم عامل ها در این کد وجود ندارد.
با این حال ، قیمت تمام این ویژگی ها چقدر است؟
Xamarin فریم ورک C # است در حالی که React Native و Ionic مبتنی بر JavaScript / TypeScript هستند.
از زامارین به روش های مختلفی می توان استفاده کرد. یک گزینه این است که تا حد ممکن حفظ کنید و فقط زبان را به C # تغییر دهید. یعنی شما با استفاده از ابزارهای استودیوی Xamarin Studio XIB ، استوری بورد و پرونده های اندرویدی را طراحی می کنید و به جای جاوا یا سوئیفت کد آن را به زبان C # می نویسید. iOS XIB و داشبورد را نیز می توان در Xcode طراحی کرد. کلیه چارچوب های بومی راحتی قابل دسترسی است. کدی که مناسبUI نیست می تواند بین پروژه های iOS و Android به اشتراک گذاشته شود. اگرچه ، اگر می خواهید تمام قدرت Xamarin را تجربه کنید ، گزینه دیگری وجود دارد: می توانید از cross-platform Xamarin.Forms استفاده کنید تا حتی UI را برای دو سیستم عامل به طور هم زمان طراحی کنید.
از طرف دیگر ، React Native و Ionic زبانهای مبتنی بر JavaScript را هستند. اما چه چیزی آنها را متفاوت می کند؟
خوب ، تفاوت اصلی در این است که React Native بیشتر شبیه Xamarin عمل می کند: شما برای ساختن رابط کاربری گرافیکی از یک زبان قالب ویژه استفاده می کنید . در عوض ، Ionic به هیچ وجه از ابزارک های بومی استفاده نمی کند. در عوض ، فقط یک صفحه وب نوشته شده در HTML را نشان می دهد که از طراحی ابزارک های بومی تقلید می کند. اگر عمیق تربررسی کنید ، React Native از یک رویکرد اصلی استفاده می کند: UI را به عنوان تابعی از وضعیت فعلی اعلام می کنید. این کار React Native اکنون یافتن قسمتهای تغییر یافته UI در هر به روزرسانی و دوباره استفاده مجدد آنها است. در صورت طرح بندی های پیچیده ، می تواند موارد را بسیار ساده کند ، زیرا منطقی که UI را هنگام تغییر حالت به روز می کند ، دیگر روی همه کد پخش نمی شود.
همانطور که می بینیم ، هر چارچوب از رویکرد کمی متفاوت استفاده می کند. خلاصه موارددر جدول زیر آمده است. ما در بخش های بعدی در مورد جوانب مثبت و منفی هر رویکرد بحث خواهیم کرد.
Xamarin | React Native | Ionic | ||
زبان | #C | JavaScript |
|
|
ویجت ها | دارد | دارد | ندارد | |
مباحث و طرح های کلی | تقریبا Native | مبتنی بر توابع | پرتابل و قابل حمل بودن |
درباره این سایت