React Native چیست ؟


معرفی React Native
یکی از آرزوهای من و شاید خیلی از برنامه نویس ها این بوده که با یادگیری یک زبان برنامه نویسی برنامه هایی بنویسیم که روی پلتفرم های مختلف اجرا بشه. هر چند که تلاش های زیادی تو این زمینه شد ولی هیچکدوم چنگی به دل نزد تا اینکه فیسبوک در ابتدای سال 2013 اولین نسخه stable از یک کتابخونه جاوا اسکریپت رو بصورت open-source روی GitHub منتشر کرد.اسم این کتابخونه ReactJs بود که برای توسعه وب اپلیکیشن ها مورد استفاده قرار میگرفت.این کتابخونه سرعت بسیار بالاو سادگی خاصی داشت که باعث شد خیلی سریع مورد توجه قرار بگیره. اواخر مارچ 2015 بود که فیسبوک یک فریم ورک جدید به اسم React Native منتشر کرد که بهت اجازه میداد فقط با استفاده از جاوا اسکریپت و کتابخونه React اپلیکیشن موبایل برای ios بسازی. فیسبوک شش ماه بعد گام اصلی و محکم رو با انتشار React Native برای Android برداشت . توسعه دهنده ها دیگه مجبور به نوشتن کدهای جداگونه برای سیستم عامل های مختلف نبودن و استارتاپ ها و صاحبان کسب کار به توسعه دهنده هایی دسترسی پیدا کردند که برای هر دو سیستم عامل َAndroid و IOS اپلیکیشن طراحی میکردند.
با React Native یک “mobile web app” ، ” HTML5 app” یا “Hybridapp” نمیسازی.یک اپلیکیشن واقعی موبایل میسازی که از یک برنامه ساخته شده با Objective-c یا Java قابل تشخیص نیست(منظور از برنامه های Native برنامه هایی هست که برای یک سیستم عامل خاص نوشته شده)
react native (ری اکت نیتیو ) چیست؟
یکی از ویژگی های کار با React Native اینکه برای طراحی UI دستت خیلی بازه و با سرعت بالایی میتونی اپلیکیشن هایی با ظاهر زیبا و جذاب طراحی کنی (نمونه بارزش که تقریبا هممون ازش استفاده میکنیم instagram). اگه دوست داری در مورد اپلیکیشن های نوشته شده با react native بدونی میتونی مقاله ۱۰ اپلیکیشنی که با React Native پیاده سازی شده اند رو بخونی.همچنین با استفاده از Node میتونی سمت سرور برنامه نویسی کنی.یک لحظه فکرشو بکن تو داری فقط و فقط با استفاده از جاوا اسکریپت اپلیکیشن Native طراحی میکنی که روی Android و IOS اجرا میشه.
Open-source بودن ReactNative و پشتیبانیش توسط فیسبوک آدم رو خیلی وسوسه میکنه که به سمتش بره(منم پیشنهاد میکنم حتماامتحانش کنید)و اینکه به قول اردلان نقشینه عزیز ،تا چند سال دیگه دنیای IT توسط جاوا اسکریپت تسخیر میشه و چه بهتر که ما هم تو این تسخیر یک سهمی داشته باشیم.
در ادامه چند تا از ویژگی های React Native رو بصورت موردی بیان می کنم:
- کامپوننتی بودن و امکان استفاده از کامپوننت ها در پروژه های دیگر و همچنین استفاده از کامپوننت های دیگر افراد که هم باعث سادگی میشه و هم سریعتر شدن کار.(هزاران کامپوننت برای هزاران کار)
- ساخت بسیار راحتتر رابط کاربری های زیبا برای اپلیکیشن (به دلیل وجود استایل css مانند و jsx) که میبینید که skype هم تجدیدنظر کرد و به ریکت نیتیو پیوست به تازگی.
- هیچ محدودیتی برای شما نداره . شما میتونید هرموقع خواستید توی ریکت نیتیو کدهای java , swift بنویسید تا کامپوننت های نیتیو خودتونو به وجود بیارید. پس از این بابت هم نگرانی ای نمیزاره (البته که هر کامپوننتی نیاز داشته باشید ایجاد شده ولی این مورد محض اطمینان هست).
- یه فرانت اند کار خوب میتونه با گذاشتن تایم کمی ریکت نیتیو رو به خوبی فرا بگیره و همچنین برنامه نویس های اندروید و Ios هم که تا الان نیتیو کار میکردند با یادگرفتن پایه های وب سمت ریکت نیتیو بیان.
- بدون اینکه از زبان های نیتیو هم سردر بیارید میتونید کار بکنید باهاش و فقط باید قواعد اپلیکیشن و تفاوتش با وب رو فرا بگیرید.
- نیازی نیست برای توسعه اپ اندرویدتون از اندروید استودیو و برای ios از xcode استفاده کنید و آزادانه میتونید از هر ادیتوری استفاده بکنید و لذت ببرید.
همگی کتابخانه ها،زبان ها و فریمورک های یک سری معایب دارند که react native مستثنی از این قاعدع نیست.در ادامه چند تا از معایب react native را به صورت موردی بیان می کنم:
- بروزرسانی بسیار زیاد React Native
- اشکال زدایی استایل ها در React Native
- وابستگی به کتابخونه های جانبی
- داکیومنت رسمی react native
چرا react native آینده توسعه اپلیکیشن های هیبریدی است؟
- با توجه به اینکه react native بر پایه جاوا اسکریپت است، اگر شما به جاوا اسکریپت تسلط دارید، فرآیند یادگیری آسانی خواهید داشت.
- نگران زمان نباشید.با ویژگی hot reloading نیازی نیست که شما برای مشاهده تغییرات ایجاد شده،هر دفعه اپلیکیشن را build کنید.
- اپلیکیشن native.بر خلاف سایر فریمورک ها که به شما خروجی webView می دهد،react native به شما خروجی کاملا native میدهد.
- یکبار کد بزنید،خروجی android و ios بگیرید.حدود 95 درصد کدهایی که شما می زنید بین دو تا پلتفرم مشترک است.
- جامعه(community) بزرگ و پشتیبانی فیسبوک که نشان دهنده میزان محبوبیت و قدرت این فریمورک است.
اگه تصمیم گرفتید که برنامه نویسی React Native(ری اکت نیتیو) را شروع کنید پیشنهاد میکنم دوره آموزش جامع و پروژه محور react native مشاهده کنید.
ممنونم از مطالب خوبتون
خواهش میکنم
سلام
ببخشید چطوری برنامه ای که به زبان java script نوشته شده،بروی اندروید و ios نصب میشه؟ یا چطور به زبان native اندروید و ios تبدیل میشه؟
سلام
برنامه ای که شما با js نوشتید برای نصب بر روی Android و Ios باید خروجی گرفته شود
یعنی برای Android با فرمت apk و برای ios با فرمت ipa تا بر روی گوشی نصب بشه
برای نحوه کار react native پیشنهاد میکنم عکس زیر رو ببینید
https://mobidev.biz/wp-content/uploads/2020/06/how-react-native-works.png
به عنوان مثال اگر کاربر بر روی یک button کلیک کند، React Native این case رو جوری translate میکنه که js بتونه اون رو handle کنه.سپس با انتقال پیام بین پلتفرم native و JS codebase
در واقع bridge میاد native events ها رو طوری translate میکنه که کامپوننت های react اون رو درک کنه و بهش پاسخ بده
سلام .ممنون از شما بابت مطالب خوبتون . من قبلا جاوا با اندروید استودیو کار کردم و میخام برم سمت فریم ورک هایی که خروجی ios , android میدن . چند ماهیم هست که فلاتر اومده و همچین قابلیتی داره . میخاستم ازتون راهنمایی بگیرم که بین فلاتر و ریکت نیتیو شما کدوم رو پیشنهاد میکند ؟
سلام.ممنون از لطفتون
من نمیتونم بهتون یکی از این فریمورک ها رو پیشنهاد کنم و بگم این صددرصد بهتره از اون یکی هست. ولی میتونید یک سری آیتم ها رو با هم مقایسه کنید مثلا react native بر پایه جاوا اسکریپت هست و بایادگیری جاوا اسکریپت میتونید با فریمورک های و کتابخونه هایی که برای وب و بک اند هست کار کنید علاوه بر اینکه اپلیکیشن موبایل برای ios و android مینویسید.همچنین react-native یک جامعه بزرگ داره و اپلیکیشن های بزرگی مثل اینستاگرام ، تسلا و … باهاش نوشته شدن
از طرف دیگه فلاتر به سرعت در حال رشده و performance بهتری نسبت به react-native داره.فلاتر بر پایه زبان دارت هست پس شما باید این زبان رو هم برای فلاتر یادبگیرید.پیشنهاد میکنم مقاله زیر رو بخونید
https://reactapp.ir/react-native-vs-flutter-which-is-more-startup-friendly/
بسیار عالی بود.
برای افرادی که فرصت و انگیزه یادگیری جاوا را ندارند بهترین ایده محسوب می شود.
ممنون از شما آقا مهدی عزیز.
بااحترام
سام موسوی
سلام سام عزیز
صددرصد برای افرادی که وب کار میکردند یا استارتاپ هایی که رشد سریع براشون مهمه،مناسبه
و اینکه با ریکت نیتیو تقریبا میشه هر اپلیکیشنی رو زد
و خیلی یادگیریش ساده است