فریم‌ورک‌های توسعه cross-platform

امروز صبح وقتی با دوستان از electron صحبت می‌کردم که می‌توان برنامه‌های دسکتاپی زیبایی در آن ساخت این سؤال مطرح شد که چرا الکترون وقتی react native هست؟ چند سال پیش react native را در حد hello world کار کرده بودم ولی پاسخی برای این سؤال نداشتم همین بود که جستجو کردم و پاسخش این بود که خب react native که خروجی ویندوز نمیده؟! دوست بنده به فلاتر اشاره کرد که اسم اون را واقعاً برای بار اول بود که می‌شنیدم و همین موضوع باعث شد این مقاله را جمع آوری کنم.راه های توسعه یک اپلیکیشن موبایلبه شکل کلی در حال حاضر چهار روش برای توسعه یک اپلیکیشن موبایل وجود دارد.۱ - بومی (Native): توسعه به زبان اصلی یعنی برای اندروید جاوا و کاتلین و برای IOS از SWIFT استفاده کنید. برای پشتیبانی از هر دو دوتا برنامه مختلف را توسعه بدین و نگهداری کنید. واضحه که سخته و هزینه بره۲ - وب ویو (Hybrid): معروفترینش phoneGap هست که امروز میگن قدیمی شده ولی جادوی زمان خودش بود! یه زمانی بود یه سایت را کامل دانلود میکردی با جاوااسکریپت براش موتور جستجو می‌نوشتی می دادیش به فون گپ و میشد اپلیکیشن موبایل!۳ - چند سکویی (crossPlatform): توسعه برنامه برای چندسکویی یا cross-platform که موضوع اصلی مون بود و الکترون را هم به همین عنوان معرفی کردیم که در ادامه بهشون می‌پردازیم.۴ - پیش رونده ها (pwa):این سبک اپلیکیشن ها هم متد جدیدی از توسعه اپلیکیشن ها هستند که برای کسانی که وبسایت دارند و نمی خواهند زیاد هزینه سنگینی کنند ، مناسب است . اپلیکیشن های پیش روند را نمی توان یک اپلیکیشن نیتیو در نظر گرفت چرا که کلا با روش های قبلی متفاوت است و شما هنگام استفاده از این روش نیازی به نصب فایل روی گوشی خود ندارید . پیش رونده ها از مرورگر و webApi ها استفاده می کنند که این نوع اپلکیشن ها به شما دسترسی آفلاین به صفحات وب را می دهند . این روش میتونه یک روش مکملی برای کسب و کار ها باشد و نمی توان یک روش مستقل برای توسعه اپلیکیشن در نظر گرفت.۵ فریم ورک توسعه برنامه‌های cross-platformتوسعه چندسکویی در net. با xamarinماژول xamarin در net. به شما اجازه می‌ده با یک کد خروجی ویندوز و اندروید و iosبگیرید(نه لینوکس!) البته با کلی معلق زدن و نصب mono و جاوا و ... میتونید یه کارایی بکنید ولی فکر کنم بی‌خیالش بشید بهتره! به هر حال خوبیش اینه که هم متن باز هم مجانی :)توسعه چندسکویی با جاوااسکریپت و htmlو cssگفتم که phonegap معجزه‌ای بود در زمان خودش اما بعد کلی تکنولوژی اومد که مشابه اون عمل می‌کرد یکم بهتر یکیش electron که با node.js و موتور کروم کدهای جاوااسکریپت را اجرا می‌کنه و برنامه های معرکه‌ای مثل vs code هم با اون توسعه داده شده و البته فریم‌ورک‌های دیگه ای که بهشون اشاره می‌کنم مثلreact native و ... ینیکینیک یا Ionic چیست؟ مجموعه ابزارای است که با جاوااسکریپت توسعه داده شده و اجازه می‌ده که برنامه‌هایی که با جاوااسکریپت و reactو vue و angular نوشته شده‌اند را به برنامه cross-platform تبدیل کرد. به هر حال وقتی ینیک صحبت از مالتی‌پلتفرم می‌کنه خیلی منظورش دسکتاپ نیست چون طبق مستندات خودش برای ویندوز محدودیت‌های زیادی داره و کلا در مورد لینوکس‌هم نظری نداره! راستی ینیک هم متن بازه :)کوردوا یا Cordovaکوردوا به تنهایی چیزی را تولید نمی‌کنه! بله از قابلیت‌های ینیک برای ارتباط با سخت‌افزار استفاده می‌کنه! بی خیال بریم بعدی!و اما React Native!نمی‌دونم react native را شنیدید یا خیر ولی احتمالا react را شنیدید. react native فریم‌ورک فیس‌بوکه که بر پایه react.js تولید شده مثل بقیه متن بازه :)‌ و میشه گفت جزو محبوب ترین‌هاست.بازم اگه صحبت از cross platform هست منظور موبایله من توی داکیومنت رسمی چیزی در ویندوز و لینوکس پیدا نکردم. توی این داکیومنت هم صحبت از ویندوز ۱۰ هست اونم با شرایطی!تکنولوژی گوگل با فلاتر!فلاتر بر خلاف تکنولوژی‌های دیگری که اسم بردیم بر مبنای جاوااسکریپت نیست و زبان خاص خودش را داره! زبان دارت! فلاتر هم برنامه‌های دسکتاپی و هم برنامه‌های موبایلی را با یک کد واحد ایجاد می‌کنه! (البته ایجاد برنامه‌های ویندوزی در آخرین آپدیت اضافه شده) بنابراین میشه گفت با فلاتر یک cross platform واقعی داریم!اینجا زبل خان آنجا زبل خان همه جا زبل‌خان!خب فلاتر یک cross-platform واقعی است مثل الکترون هم خروجی حجیم نمیده ولی من به یک دلیل فلاتر انتخابم نیست! وقتی میتونم با یادگیری یک زبان یعنی جاوا اسکریپت در سرور با node.js در کلاینت با react native یا electron و در کلاینت ساید با react و vue و ... کار کنم خیلی انگیزه‌ای برای یادگیری یک زبان جدید ندارم!