فریمورک و برنامههای زیادی وجود دارند که با آنها میتوان اپلیکیشن موبایل را توسعه داد. فریم ورک React Native هم یکی از آنها است. این فریم ورک متنباز که توسط شرکت بزرگ فیسبوک توسعه داده شده است با ویژگیهای خاص و منحصربهفرد خود توانسته در بین برنامهنویسان محبوبیت بالایی کسب کند. در این مقاله میخواهیم نگاهی اجمالی به فریم ورک React Native داشته باشیم و در مورد آن کمی بیشتر بدانیم. اگر شما هم به این مبحث علاقهمند هستید تا پایان با ما همراه شوید.
در سال 2011 شرکت فیسبوک در مدیریت برنامه Facebook ads app با مشکلاتی روبرو شد. گسترده شدن این برنامه به همراه افزایش ویژگیها سرعت پیشرفت فیسبوک را کم کرد و به همین خاطر پیداکردن یک راهحل ضروری به نظر میرسید. سال 2012 یکی از مهندسان این شرکت به نام جوردن واک کار بر روی پیشنویس React را آغاز کرد تا بلکه بتواند مشکلات موجود را برطرف کند.
اولین پیشنمایش عمومی React Native در کنفرانس ReactJS سال 2015 منتشر شد. شرکت Facebook برای آنکه توسعه دهندگان بتوانند بهراحتی به این فریم ورک دسترسی داشته باشند React Native را در GitHub در دسترس عموم گذاشت. از آن زمان تا کنون این فریمورک کاربردی بهخاطر تواناییاش در ساخت برنامههای native بسیار موردتوجه برنامهنویسان بوده است.
تشابه اسمی بین ReactJS و React Native گاه باعث سردرگمی میشود. بیایید قبل از هر چیز کمی شفافسازی برای این اسامی انجام دهیم. آنچه با نام ReactJS شناخته میشود یک کتابخانه جاوا اسکریپت است که سال 2011 معرفی شد. این کتابخانه سال 2012 در اپلیکیشن اینستاگرام هم مورداستفاده قرار گرفت. نقطهای که ریاکت جی اس و ریاکت نیتیو را به هم متصل میکند این است که در React Native شما از دو ابزار یعنی زبان JavaScript و امکانات کتابخانه React استفاده میکنید تا اپلیکیشن موبایل بسازید.
اولین تفاوتی که بین ReactJS و React Native وجود دارد در ساختار آنها است. یکی در قالب کتابخانه عرضه شده و دیگری یک فریم ورک به شمار میرود. ریاکت برای ساخت رابط کاربری (UI) در اپلیکیشنهای تک صفحهای کاربرد دارد. به همین جهت المانهایی از جنس ساختار صفحات وب در آن وجود دارد. نزدیکی آن به برنامهنویسی وب تا جایی است که حتی برای یادگیری آن نیز معمولاً توصیه میکنند با HTML و CSS آشنا شوید.
در طرف دیگر React Native قرار دارد که برای ساخت اپلیکیشنهای اندروید و iOS از آن استفاده میکنند. طبیعی است باتوجهبه کاربرد آن، در این فریم ورک ساختاری مشابه زبانی مثل جاوا را شاهد باشیم. به دلیل همین تفاوتها بسیاری از کتابخانهها و پکیجها قادر به استفاده همزمان از این دو نیستند. در React Native شما نمیتوانید انیمیشن های CSS را پیاده سازی کنید. علاوه بر آن ساز و کار کدنویسی برای جا به جایی میان دو صفحه از یک برنامه در این دو با هم تفاوت دارند.
بی تردید دلایلی وجود دارد که برنامه نویسان تا این حد از فریم ورک React Native برای ساخت برنامه ها استفاده میکنند. در این بخش به برترین موارد میپردازیم و مختصری در مورد هرکدام توضیح میدهیم.
برنامهنویسان تنها در یک زمینه است که تخصص دارند. بهعنوانمثال یک برنامهنویس فقط در زمینه وب فعالیت دارد و دیگری فقط برای اندروید برنامه مینویسد. همین محدودیت باعث میشود برای پروژههایی که نیاز به ساخت برنامه برای چند پلتفرم دارند مجبور باشید چند تیم مختلف استخدام کنید. هرکدام از این تیمها اپ مربوط به یک پلتفرم را میسازند. React Native اما این امکان را به شما میدهد تا هم خروجی اندروید و هم iOS داشته باشید. در واقع React کدهای نوشته شده را به زبان بومی یا Native تبدیل میکند و بهاینترتیب شما برای پلتفرمهای مختلفی برنامه خواهید داشت.
داشتن خروجیهای مختلف اولین تأثیر خود را اینجا نشان میدهد. وقتی با یکبار کدنویسی خروجیهای مختلفی میگیرید، دیگر نیازی نیست تا چند تیم را برای برنامهنویسی استخدام کنید. این کار هزینههای شما را تا حد زیادی کاهش میدهد و درعینحال باعث صرفهجویی در وقت نیز میشود.
شرکت فیسبوک بزرگترین پشتیبان فریم ورک React Native بهحساب میآید. از طرفی چون کدهای React Nativeدر گیتهاب و بهصورت متنباز منتشر شده است برنامهنویسان بسیاری در سراسر جهان برای پیشرفت آن مشارکت میکنند. در کنار این مورد، شما بهعنوان یک برنامهنویس در صورت بروز مشکل میتوانید از افراد زیادی در انجمنهای مختلف کمک بگیرید.
یکی از چیزهایی که بسیار برای توسعه دهندگان اهمیت دارد و در IDEها نیز معمولاً وجود دارد شرح خطاها است. فریم ورک React Native نیز هنگام کدنویسی اگر خطایی به وجود بیاید به شما میگوید که خطا در کدام خط کد رخداده است. برای همین اصلاح کدها و پیداکردن خطاها سادهتر خواهد شد.
در مقایسه با برنامههایی که با مدل هیبریدی نوشته میشوند، زمان بارگذاری در React Native کمتر است. شما در این فریم ورک دو گزینه به نامهای Live Reloading و Hot Reloading دارید که اولی بیشتر برای برنامههای تک صفحهای و دومی برای اپلیکیشنهایی که چند لایه دارند استفاده میشود.
جهت کسب اطلاعات بیشتر در مورد جزئیات این فریم ورک به سایت رسمی React Native مراجعه کنید.
یک سری نقصها، مثل هر فریم ورک دیگری در React Native هم وجود دارد. در این قسمت قصد داریم برخی از این معایب را مرور کنیم.
شاید تعداد زیاد بهروزرسانیها در نگاه اول مقولهای مثبت بهحساب بیاید اما بنا بر دلایلی این مسئله یک نکته منفی برای این فریم ورک است. تعداد زیاد بهروزرسانیها گاه باعث سردرگمی توسعه دهندگان میشود. بعضی مواقع ممکن است وسوسه شوید تا پروژه خود را به جدیدترین نسخه بهروزرسانی کنید. گاهی اوقات هم مشکلات موجود در نسخه جدید شما را وادار میسازد به نسخه قدیمی برگردید. علاوه بر این، آپدیتها برنامهنویسان را وادار به اعمال تغییرات کلی میکنند که این معضل برای برخی از اپلیکیشنهای معروف هم ایجاد مشکل کرده است.
سهولت در یادگیری یکی از چیزهایی است که تازهواردان را جذب میکند. از این نظر فریم ورک React Native جزو دستۀ آسان به شمار نمیرود و همین یک نکتۀ منفی در مورد آن است. این مسئله ریشه در وجود JSX دارد.
با اینکه ریاکت نیتیو کامپوننتهایی قوی دارد ولی در موارد به خصوصی این کامپوننتها برای کار شما چندان مناسب نیستند. در توسعه برنامۀ iOS شما از Tab Bar خود React Native استفاده می کنید. در مقابل وقتی کار توسعۀ اپ اندروید را انجام میدهید به یک کتابخانۀ جانبی نیاز پیدا میکنید. اینجا است که باید بررسی کنید و ببینید کتابخانهای که پیدا کردهاید مناسب کار شما هست یا نه. این کار موجب اتلاف وقت است.
برای اپلیکیشنهای متمرکز استفاده از ریاکت نیتیو مناسب نیست. ریشه این ضعف را میتوان در محدودیتهای جاوا اسکریپت پیدا کرد. به دلیل شناور بودن محاسبات و همچنین روشهای ناکارآمدی که وجود دارد، مدیریت و مصرف حافظه در این فریم ورک دارای اشکالاتی است که قابلچشمپوشی نیستند.
علیرغم محدودیتهای این فریم ورک، مزایای آن بهاندازهای زیاد بوده که برندهای معتبر قانع شوند تا از آن استفاده کنند. در آخرین بخش مقاله میخواهیم نگاهی به نام آشناترین سرویسهایی بیندازیم که به React Native اعتماد کرده اند.
بدیهی است که سازنده فریم ورک React Native خود اولین استفاده کننده آن باشد. همانطور که گفته شد اپ مدیریت تبلیغات فیسبوک و اپلیکیشن Facebook در ساختار خود از این فریم ورک بهره بردند. این کار در حل مشکلات درون سازمانی این شرکت نقش به سزایی داشت.
شبکه اجتماعی اینستاگرام در ایران بسیار محبوب است. این شبکه که کاربران بیشتر برای اشتراکگذاری فیلم و تصویر از آن استفاده میکنند از ریاکت نیتیو در ساختار خود بهره میگیرد. توسعه دهندگان اینستاگرام کل برنامه و پلتفرم را تغییر دادند و نتیجهای که به دست آوردند فوقالعاده بود! با این تغییر بنیادی نگهداری از نسخههای Android و iOS سادهتر شد.
شبکه اجتماعی اسکایپ یکی از محصولات شرکت مایکروسافت است. کاربرد اصلی آن برقراری تماس تصویری است اما میشود با آن صدا و پیامهای لحظهای نیز ارسال کرد. برای اپلیکیشن موبایل Skype شرکت مایکروسافت تصمیم گرفت تا تکنولوژی React Native را به کار بگیرد.
دیسکورد شبکه ای است که بیشتر جامعه گیمرها با آن کار می کنند. کار اصلی آن برقراری تماس صوتی از طریق ارتباط اینترنتی است. در کنار آن کاربرها میتوانند فایلهای چندرسانهای، لینکها و پیامهای متنی نیز به یکدیگر ارسال کنند. این شبکه اجتماعی نامآشنا در اپلیکیشن اندروید و iOS خود برای اشتراک گذاشتن کدهای برنامه از React Native کمک گرفت.
کمپانی بایدو غیر از کشور چین در بین دیگر جوامع چندان شناخته شده نیست. اما جالب است بدانید بیش از 600 میلیون نفر از مردم چین از محصول این شرکت استفاده میکنند. برنامه موبایل این کمپانی یک موتور جستجوی چینی است که دولت چین آن را جایگزین گوگل کرده است. بایدو این اپلیکیشن خود را با استفاده از ریاکت نیتیو ساخته است.
یک شبکه اجتماعی دیگر است که در آن کاربران به طور کامل امکان تعامل با یکدیگر را ندارند. آنچه کاربران این شبکه اجتماعی انجام میدهند این است که پستها و ایدههای خودشان در خصوص یک موضوع خاص را به اشتراک میگذارند. سازندگان پینترست یک اپ موبایل نیز دارند که با این فریم ورک نوشته شده است.