React Native چیست؟ React Native یک فریمورک UI متن باز برای ساخت اپلیکیشن موبایل است که توسط فیس بوک معرفی و عرضه شده است. به کمک ری اکت نیتیو و زبان جاوا اسکریپت میتوانیم برای اندروید، آی اواس، وب و حتی UWP (پلتفرمی برای ساخت برنامههای تحت ویندوز، ویندوز موبایل، Xbox و سایر محصولات مایکروسافت) اپلیکیشن بسازیم. در این مقاله بررسی میکنیم که React Native چیست و چه مزایایی دارد. با وب سایت آموزش برنامه نویسی سون لرن همراه باشید.
جاوا اسکریپت یکی از زبانهای محبوب برنامه نویسان است. با قدرت و انعطافی که جاوا اسکریپت دارد، تقریبا هر کاری میشود با آن کرد. برای مثال پویاسازی صفحات وب به کمک جاوا اسکریپت و کتابخانههایی مثل jQuery و… انجام میشود.
جاوا اسکریپت در سمت سرور، یک محیط اجرایی به نام Node.js دارد و فریمورکهایی مانند Express.js به برنامه نویس کمک میکنند در سمت سرور هم با جاوا اسکریپت کار کند. با جاوا اسکریپت و به همراهی HTML میتوان بازیهای تحت وب ساخت. همینطور به کمک React Native و زبان جاوا اسکریپت میتوانید اپلیکیشن موبایل برای پلتفرمهای مختلف بسازید.
React Native بر پایهی یکی دیگر از سرویسهای محبوب فیس بوک یعنی React (react چیست) میباشد که در طراحی رابط کاربری (UI) استفاده میشود. ولی برخلاف React که تمرکز اصلی آن روی مرورگر است، React Native برای ساخت اپلیکیشنهای موبایل استفاده میشود.
به عبارت دیگر React Native شرایطی را مهیا کرده است که برنامه نویسان وب بتوانند اپلیکیشنهایی بسازند که دقیقا شبیه به برنامههای نوشته شده به زبان Native رفتار کنند. از آنجایی که برنامه نویسان زیادی زبان برنامه نویسی جاوا اسکریپت را دوست دارند و از آن استفاده میکنند، تجربهی کار با React Native میتواند لذت بخش باشد.
برنامههای React Native نیز مانند React با زبان جاوا اسکریپت و JSX نوشته میشوند. سپس میتوان از این کدهای نوشته شده برای اندروید و iOS خروجی گرفت. البته باید دقت داشته باشید که برنامهای که با React Native مینویسید، حالت Webview نداشته و کامپوننتهای واقعی UI را تولید میکند. در واقع اپلیکیشن شما هیچ تفاوتی با سایر برنامههای موبایل که با زبان Native نوشته شدهاند نخواهد داشت.
در نگاه اول شاید برخی تصور کنند که React Native بسیار شبیه به React یا همان ReactJs است اما تفاوتهای زیادی بین این دو وجود دارد. در حقیقت برای شروع کار با React Native، باید با مفاهیم پایه و اساسی React آشنا باشید تا بتوانید با این فریمورک برنامه نویسی کنید. از طرفی هم اگر به React مسلط باشید و بخواهید که با React Native برنامه بسازید، باید تفاوتهای بین این دو را بدانید وگرنه در ادامهی مسیر به مشکلات جدی برخورد میکنید. پس در این بخش به برخی از این تفاوتها اشاره میکنیم.
ری اکت نیتیو یک فریمورک است، در حالی که React یک کتابخانهی جاوا اسکریپت برای وب است. زمانی که میخواهید یک برنامهی جدید با React شروع کنید، باید ماژولهای موردنیاز برای توسعهی برنامه را به صورت جدا و یکی پس از دیگری نصب کنید تا بتوانید از آنها استفاده کنید. اما اگر کار را با React Native شروع کنید، میبینید که اغلب ابزارهایی که نیاز دارید آماده است و میتوانید به راحتی در محیط توسعه، کدنویسی کنید.
React برای کدنویسی تحت وب ایجاد شده است؛ پس المانهای رابط کاربری تولید شده توسط آن از جنس ساختارهای صفحات وب میباشد. اما از آنجایی که React Native یک برنامهی تحت تلفن همراه را تولید میکند، ساختاری مشابه با کدهای زبانهای بومی مانند جاوا و… دارد و بسیاری از قابلیتهای زبانهای تحت وب را ندارد.
بسیاری از پکیجها و کتابخانهها نمیتوانند از این دو به طور همزمان در کنار هم استفاده کنند. زیرا React Native از HTML برای رندر برنامه استفاده نکرده و کارکرد آن کمابیش همانند یک شبیه ساز است. برای مثال کدهای مربوط به انیمیشنهای CSS در React Native قابل اجرا نیستند و به جای تگ div، از کامپوننت View استفاده میشود. همچنین سازوکار کدنویسی مفهوم جابجایی میان دو صفحه از برنامه، در این دو به طور کلی متفاوت است.
همانطور که میدانید اندروید و iOS، سهم بزرگی از بازار موبایل را تصاحب کردهاند. زبان رسمی ساخت اپلیکیشن برای اندروید، جاوا است؛ البته مدتی است که زبان کاتلین هم به آن اضافه شده است. از طرفی اپلیکیشنهای iOS از زبان سوییفت (Swift) استفاده میکنند. در حالی که React Native میتواند در توسعهی هر دو سیستم عامل مورد استفاده قرار گیرد. حال با وجود ری اکت نیتیو این سوال پیش میآید که برای توسعه اپلیکیشنهای موبایل، آموزش ری اکت را دنبال کنیم یا به سمت یادگیری جاوا یا سوییفت برویم؟
در یک مقایسه کلی میتوان گفت که مسیر یادگیری React میتواند برای شما بسیار سریعتر باشد. کار با React Native سادهتر از جاوا است؛ به خصوص اگر آشنایی چندانی با زبان جاوا نداشته باشید. React Native به منابع کمتری نیاز دارد، زیرا با آن برای اندروید و iOs به صورت یک جا کدنویسی میشود. اما برخی از ویژگیهای اندروید و iOS سبب میشوند تا توسعه دهندگان برخی از قسمتهای کد را برای iOS یا اندروید به صورت خاص شخصی سازی کنند. در هر حال اندروید و iOS هر کدام از لحاظ ظاهری طراحی متفاوتی دارند و کمپانی اپل به طور پیوسته تکنولوژیهای خود را به روزرسانی میکند.
یکی دیگر از تفاوتهایی که حتما باید به آن توجه کنید این است که جاوا و سوییفت زبانهای کامپایلری (Compiled Languages) هستند، در حالیکه جاوا اسکریپت یک زبان تفسیری (Interpreted) است. به عنوان مثال اگر اشتباهی در نوع تعریف و یا مقدار متغیرها در کدهای جاوا اسکریپت شما ایجاد شود و متوجه آن نشوید، کامپایلری وجود ندارد که که جلوی این کار را بگیرد و در زمان اجرا به آن پی خواهید برد.
برای اولین بار گوگل در ماه مه سال 2017 فلاتر را معرفی کرد، اما نسخهی پایدار آن در دسامبر 2018 منتشر شد. فلاتر یک کیت توسعهی نرم افزار متن باز مخصوص رابط کاربری است که از آن برای توسعهی اپلیکیشنهای اندروید، iOS، لینوکس، مک، ویندوز و وب استفاده میشود.
از زمان انتشار فلاتر، بحثهای داغ و گفتگوهای جنجالی درمورد استفاده از React Native و فلاتر به وجود آمده است. این بحث باعث شده تا توسعه دهندگان تازه وارد دچار شک و دودلی شوند و نتوانند به درستی تصمیم بگیرند که کدام را انتخاب کنند. به خصوص که در طی سالهای اخیر، فلاتر توانسته است از حیث محبوبیت به React Native برسد.
فلاتر از یک زبان برنامهنویسی به نام دارت (Dart) استفاده میکند. دارت با استفاده از بهترین و بهینهترین ایدههای زبانهای مختلف برنامهنویسی توسعه یافته است. این زبان نسبت به جاوا و جاوا اسکریپت دارای قواعد کمتری است.
اگر میخواهید فلاتر را یاد بگیرید، بد نیست بدانید که مسیر یادگیری آن، آسانتر و سریعتر از React Native است. برای شروع فلاتر تنها نیاز به آموختن زبان دارت و سپس خود فلاتر است. اما برای شروع React Native باید ابتدا جاوا اسکریپت، سپس React و در نهایت React Native یاد بگیرید.
پشتیبانی از جاوا اسکریپت و React Native در فضای اینترنت بیشتر است. از زمان پیدایش جاوا اسکریپت تا کنون، میلیونها خط کد در سطح وب و به صورت رایگان منتشر شده است و میتوانید به سادگی از آنها در پروژههای مختلف استفاده کنید.
یکی از دلایل انتخاب دارت توسط توسعه دهندگان این است که مجموعهی کاملی از ابزارهای از پیش طراحی شدهی رابط کاربری را در اختیار دارد. به وسیلهی این ابزارها میتوان در زمان کوتاهی یک برنامهی ساده را پیاده سازی کرد. در حالی که در React Native این مجموعه وجود ندارد و توسعه دهندگان باید از کتابخانههای آماده استفاده کرده و آنها را مطابق نیاز خود، شخصی سازی کنند.
به دلیل آن که فلاتر و دارت دیرتر از جاوا اسکریپت و React Native به توسعهدهندگان معرفی شدهاند، جامعهی برنامه نویسان و کاربران آنها به نسبت کوچکتر است. البته روز به روز به تعداد برنامه نویسان فلاتر افزوده میشود و در آینده شاید تا حدودی این شکاف برطرف شود.
اگر شما هم به برنامه نویسی اندروید علاقه مندید میتونید در دورههای آموزش برنامه نویسی اندروید و آموزش فلاتر سون لرن که توسط یکی از بهترین اساتید ایران تدریس شده است شرکت نمایید.
به دلیل اینکه React Native زمان طولانیتری در دسترس توسعه دهندگان بوده، از لحاظ شغلی بسیار محبوبتر است. پس در حال حاضر میزان تقاضای شغلی React Native بسیار بیشتر از فلاتر است. با این حال این آمار در طول زمان متغیر است و ممکن است در سالهای آتی تغییر کند.
برنامههایی که به کمک جاوا و سوییفت نوشته میشوند را به اصطلاح بومی یا Native مینامند. ممکن است برایتان این سوال پیش آمده باشد که چرا با وجود زبانهای بومی باید سراغ فریمورکها و واسطه هایی مثل React Native برویم؟ در ادامه درمورد مزایای استفاده از React Native بیشتر صحبت میکنیم.
اغلب کسانی که برنامه نویسی موبایل را شروع میکنند، بین اندروید و iOS یکی را انتخاب کرده و در آن حوزه متخصص میشوند. کمتر برنامه نویس اندرویدی پیدا میشود که برای گوشیهای آیفون هم بتواند اپلیکیشن بسازد. در این حالت برنامه نویس برای برنامه نویسی در یک سیستم عامل خاص، باید زبان Native آن سیستم عامل را یاد بگیرد. این انحصاری بودن ممکن است کمی آزاردهنده باشد. اما React Native به شما اجازه میدهد با زبان جاوا اسکریپت برنامه موبایل بنویسید، React این کدها را تبدیل به زبان Native کرده و خروجی اندروید و iOS به شما میدهد.
شاید در طول پروژه نیاز داشته باشید که بعضی از بخشهای برنامه را با زبانهای Native جاوا و سوئیفت بنویسید. React این امکان را فراهم میکند تا هر زمانی که دوست داشتید از این زبانها در کنار جاوا اسکریپت استفاده کنید. علاوه بر آن، میتوانید React Native را به پروژههای قبلی خود اضافه کرده و حتما لازم نیست که کل مسیر توسعهی برنامه را از اول با React بروید.
از آنجایی که برنامههای نوشته شده با ری اکت خروجیهای مختلفی مثل اندروید، iOS و وب به شما میدهند، دیگر لازم نیست که شرکتها چند برنامه نویس برای پلتفرمهای مختلف استخدام کنند. این مزیت React Native هزینهها را تا حد زیادی کاهش میدهد و روند توسعه اپلیکیشنها را تسریع میکند. تمام کسب و کارها دوست دارند تا جای ممکن هزینههای خود را کم کنند، به خصوص استارتاپها که با منابع مالی محدودی مواجه هستند. با استفاده از ری اکت نیتیو میتوانید در زمان و هزینهی خود صرفه جویی کنید.
فیس بوک در سال 2015 فریمورک React Native را معرفی کرد و تا امروز هم پشتیبانی آن را به عهده گرفته است. React Native به صورت متن باز (Open Source) منتشر شده و کدهای آن در گیت هاب وجود دارد. در سال 2018، React Native در گیت هاب رتبهی دوم بیشترین مشارکت را بین تمام Repositoryها کسب کرد. همچنین انجمنها و برنامه نویسان زیادی در دنیا هستند که در صورت بروز مشکل میتوانید روی کمک آنها حساب باز کنید.
در یک جمع بندی، اگر بخواهیم مزایای استفاده از React Native را لیست کنیم، به موارد زیر میرسیم:
البته باید توجه داشت که استفاده از React Native معایبی نیز به همراه دارد. برخی از این معایب عبارتند از:
استفاده از React Native مزایای زیادی به همراه دارد و شرکتهای محبوب دنیا، با هوشمندی این مزایا را کشف کردهاند. در حقیقت برخی از معروفترین سرویسهایی که هر روز از آنها استفاده میکنیم، به React Native اعتماد کردهاند و در بخشهای مختلف سرویس خود، از این فریمورک استفاده کردهاند. در ادامه چند مورد از مطرحترین برندهایی که از React Native استفاده میکنند را معرفی میکنیم.
مگر میشود تولیدکننده یک محصول از آن محصول استفاده نکند؟ فیس بوک React Native را به عنوان یک راه حل برای بعضی از مشکلاتی که درون سازمان داشت معرفی کرد، سپس قدرت این فریمورک را در اپلیکیشن فیس بوک و اپلیکیشن مدیریت تبلیغات فیس بوک به رخ بقیه کشید. علاوه بر آن، فیس بوک در سرویس آمارگیر خود با نام Facebook Analytics نیز از این فریمورک استفاده کرد.
اینستاگرم نیازی به معرفی ندارد. این شبکه اجتماعی رکورد 1 میلیارد کاربر را در جهان زده است و محبوبترین سرویس در حوزه اشتراک تصویر و ویدئو میباشد. تغییر پلتفرم و انتقال کل برنامه به React Native چالش بزرگی برای توسعه دهندگان اینستاگرام بود. اما اینستاگرام این ریسک را قبول کرد و نتیجهی آن را هم دید. بعد از این تغییر، نگهداری هر دو نسخهی اندروید و iOS این اپلیکیشن بسیار آسانتر شد.
اگر از علاقه مندان بازیهای رایانهای باشید، احتمالا اسم Discord به گوشتان خورده است. یک شبکهی اجتماعی بزرگ برای چت بین بازیکنان که قابلیتهای بسیاری متنوعی دارد. نکتهی جالبی که درباره Discord باید بدانید این است که نسخهی اندروید و آی او اس این برنامه 98% کد مشترک دارند و Discord یک نمونه پیاده سازی موفق از React Native به حساب میآید.
SoundCloud یکی از معروفترین سرویسهای اشتراک انواع موسیقی و فایلهای صوتی است که کاربران بسیار زیادی دارد. این شرکت تعداد زیادی توسعه دهنده iOS داشت که همین مورد باعث میشد اختلاف بین خروجی اندروید و خروجی iOS برنامه زیاد شود. آنها بعد از انجام آزمایشهای مختلف به این نتیجه رسیدند که React Native گزینهی ایده آلی برای رفع مشکلاتشان بوده و سرویس خود را به طور کامل تحت این پلتفرم طراحی کردند.
در این مطلب با هم بررسی کردیم که React Native چیست و استفاده از آن چه مزایایی دارد. React Native به ما اجازه میدهد با کمک زبان برنامه نویسی جاوا اسکریپت رابط کاربری اپلیکیشنهای تلفن همراه را طراحی کنیم، بدون اینکه نیاز باشد به زبانهای Native برنامه نویسی موبایل مانند جاوا یا سوییفت مسلط باشیم. در واقع قرار نیست این فریمورک جای زبانهای بومی یا Native را بگیرد، بلکه یک راه حل خوب برای برنامه نویسان موبایل و علاقه مندان به جاوا اسکرپیت است تا به کمک این زبان دوست داشتنی برای موبایل هم برنامه بسازند. در آخر از شما میخواهیم اگر تجربهی کار با React Native را داشتید، تجربیات خود را با ما و کاربران سون لرن به اشتراک بگذارید.
اگر منظورتون برای اتصال صفحات به سرویسهاست، بله قابل استفاده است.