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