احتمالا دارید دنبال مقالهای میگردید که توضیحات جامع و کاملی در مورد یکی از مهمترین فریم ورکهای موبایل یعنی ریاکت نیتیو ارائه داده باشد. اینجا بهترین جاییست که میتوانید پاسخ کاملی به نیازتان پیدا کنید، چرا که ما تصمیم گرفتیم برویم و خود آقای ذاکر… ببخشید آقای زاکربرگ را پیدا کنیم تا با پرسیدن سوال ری اکت نیتیو ( React Native ) چیست؟ تمام آنچه را که باید در مورد ری اکت نیتیو دانست، از زیر زبانش بیرون بکشیم.
شاید بپرسید چرا بین اینهمه آدم آقای زاکربرگ را انتخاب کردهایم؟ جواب شما برمیگردد به تاریخچهی ری اکت نیتیو! خوب است قبل نشاندن آقای زاکربرگ روی صندلی داغمان، مختصری دربارهی تاریخچهیreact native برایتان توضیح بدهیم.
تاریخچهی ری اکت نیتیو بهعنوان یکی از مهمترین فریمورکهای موبایل
در سال 2011 کارشناسان فیسبوک با مشکلاتی در زمینهی کدها مواجه شدند. هرچقدر که برنامهی مدیریت تبلیغات فیسبوک ( Facebook ads app ) گستردهتر میشد، فیسبوک به تعداد افراد بیشتری برای مدیریت بدون نقص برنامه نیاز پیدا میکرد. با افزایش ویژگیهای برنامه و همچنین افزایش تعداد کارمندها، سرعت پیشرفت فیسبوک کمتر و کمتر میشد؛ و در طول زمان با آپدیتهای بیشمار برای برنامه و سیل بزرگ مشکلات، مدیریت برنامه غیرممکن میشد!
اینجا بود که یکی از مهندسان فیسبوک به نام جردن واک مدل پیشنمونهی ریاکت را ( بهعنوان منبع جاواسکریپت JavaScript library ) ساخت تا بتواند برنامه را مفیدتر کند.
در سال 2012 با سختتر شدن مدیریت FACEBOOK ADS جردن واک بیشتر روی پیشنمونهی ری اکت کار کرد و نسخهی نهایی ری اکت خلق شد.
در همین سال بود که زاکربرگ اقرار کرد «تاکنون بیشازحد روی HTML سرمایهگذاری کرده و قول داد که فیسبوک بهزودی تجربهی موبایلی بهتری را رقم خواهد زد.»
فیسبوک در سالهای 2013 و 2014 ری اکت را گسترش داد و نهایتا در سال 2015 توانست نسخهی REACT NATIVE را برای اندروید و iOS بهصورت منبعباز (OPENSOURCE) در سایت GITHUB منتشر کند.
ریاکت نیتیو react native چیست؟
زاکربرگی که همه چیز را به نام خودش میخواهد!
ریاکت نیتیو چیست؟ این اولین سوالی بود که میخواستیم از آقای زاکربرگ بپرسیم اما ایشان وقتی مقدمهی این مقاله را مطالعه کردند، ناراحت شدند و گفتند: «برو سوالاتت را از همان جردن واک بپرس!» و چون ما هم آدمی نبودیم که بهخاطر قهر آقای مارک بیاییم و همه چیز را بهنام ایشان ثبت کنیم، ترجیح دادیم به مهندسِ زحمتکشی که این پدیده را آفریده خیانت نکنیم. این شد که رفتیم و سوال اولمان را از جردن واک پرسیدیم و گفتیم: آقای واک شما که ری اکت نیتیو را ساختید بفرماید که: React Native چیست؟!
آقای جردن واک گفت:
ریاکت نیتیو یک فریمورک جاواسکریپت است که برای طراحی برنامههای بومی موبایل و برای سیستم عاملهای اندروید و iOS ساخته شده است. React Native بر پایهی کتابخانهی جاوا اسکریپت فیسبوک یعنی همان ReactJs ساخته شده است، اما بهجای هدف قرار دادن مرورگر، اینبار پلتفورمهای موبایل را مورد هدف قرار داده است.
بهعبارتی حالا توسعه دهندههای وب میتوانند برنامههایی برای موبایل بنویسند که کاملا بومی یا native به نظر برسند و همگی از همان کتابخانهی جاواسکریپتی که میشناسیم و دوستش داریم نوشته شده باشند. بهعلاوه از آنجایی که بیشتر کدهایی که نوشته میشوند میتوانند بین پلتفورمها به اشتراک گذاشته شوند، ری اکت نیتیو این شبیه سازی را برای هردو سیستم عامل اندروید و iOS گسترش داده است.
بعد ما پرسیدیم: ببخشید آقای جردن واک شما گفتید ریاکت نیتیو ( React Native ) بر پایهی ری اکت ساخته شده است. میشود توضیح بدهید که تفاوت بین ریاکت نیتیو و ریاکت جیاس چیست؟
پاسخ آقای جردن انقدر کامل بود که ترجیح میدهیم یک زیرتیتر به متنمان اضافه کنیم!
پیشنهاد مقاله: با پایتون به یک دوندهی هزارتوی برنامهنویسی تبدیل شوید
شباهتها و تفاوتهای بین React Native و React JS
ری اکت جیاس یکی از کتابخانههای جاوا اسکریپت است، اما React Native یکی از فریمورکهای جاوا اسکریپت است که از React Js استفاده میکند.
درست مشابه ری اکت برای وب، اپلیکشنهای ریاکت نیتیو با استفاده از تلفیق جاواسکریپت و XML نوشته میشوند که این مخلوط بعنوان JSX شناخته میشود. در پس ری اکت نیتیو از APIهای راهاندازی مربوط به objective-C (for iOS) و جاوا (برای اندروید) استفاده میشود، بنابراین برنامههای نوشته شده باUI کامپوننتهای واقعی موبایل رندر میشوند نه با وبویوها! ودرست عین بقیهی برنامهها به نظر میرسد. React Native با استفاده از جاواسکریپت به API پلتفرمها دسترسی دارد، بنابراین برنامهی مورد نظر میتواند به ویژگیهای پلتفرم مثل دوربین و جی پی ای و … دسترسی داشته باشد.
برای توسعه اپلیکیشنهای سیستم عامل اندروید از زبان جاوا و برای توسعه اپلیکیشنهای سیستم عامل iOS از زبان سوییفت (Swift) استفاده میشود. در حالیکه React Native میتواند در توسعه هر دو سیستم عامل مورد استفاده قرار گیرد.
ری اکت نیتیو ( React Native ) شبیه ری اکت جیاس (React Js ) است، با این حال از کامپوننتهای بومی به جای کامپوننتهای وب به عنوان بلوکهای حیاتی سازنده استفاده میکند. شما باید بخشی از ایدههای بنیادی ری اکت نیتیو را ببینید تا بتوانید ساختار اپلیکیشنهای ریاکت را درک کنید.
تفاوت بعدی در این است که جاوا و سوییفت، زبانهای کامپایلری (Compiled Languages) هستند، در حالیکه جاواسکریپت زبانی تفسیری (Interpreted) است. به عنوان مثال اگر تغییری در مقدار و نوع تعریف متغیرها در کدهای جاوا اسکریپت شما ایجاد شود و متوجه این اتفاق نباشید، کامپایلری وجود ندارد که جلوی این کار را بگیرد.
در یک مقایسهی کلی میتوان گفت کار با ریاکت سادهتر از جاوا است، مخصوصاً اگر آشنایی چندانی با زبان جاوا ندارید، مسیر یادگیری React میتواند برای شما بسیار سریعتر باشد. همچنین React Js به منابع کمتری نیاز دارد زیرا بخش اندروید و iOS را از یکدیگر جدا نمیکند. از طرفی اندروید و iOS هر کدام مدلهای طراحی متفاوتی دارند که برنامه نویسانِ react Js را مجبور به کدنویسی مجدد این بخشها میکند. این کار برای iOS سختتر است زیرا کمپانی اپل بهطور پیوسته تکنولوژیهای خود را بهروزرسانی میکند.
توضیح ریاکت نیتیو به زبان سادهی سادهی ساده
- خب آقای واک ما بهعنوان کسی که میخواهد ری اکت نیتیو را یاد بگیرد و بعد برای خودش شغلی دست و پا کند، باید بگوییم که هیچی از صحبتهایتان متوجه نشدیم! اگر شما هم مثل زاکربرگ قهر نمیکنید بگذارید سوالمان را جور دیگری بپرسیم:
چرا یاد گرفتن ری اکت نیتیو ( React Native ) مهم است؟
آقای جردن جواب داد: اگر در سایتهای معتبر، آمار دانلودِ برنامههای موبایل را طی یک سال بررسی کنید متوجه میشوید که نرخ دانلود اپلیکیشنهای موبایل بهطور سرسامآوری در حال افزایش است. اجازه بدهید سایت sensortower را بگردیم و ببینم چی پیدا میکنیم؟!
توی نمودار بالا، تعداد دانلود اپلیکیشنهای موبایل در نیمهی اول سال 2018 و نیمهی اول سال 2019 میلادی را در دو فروشگاه google play و app store میبینید. در آمار کلی حدود یازده درصد افزایش دانلود نسبت به همین بازهی زمانی در سال قبلی وجود داشته است و مجموع دانلودها از این دو فروشگاه به حدود 55 میلیارد آن هم فقط در یک نیمسال رسیده است!
بر اساس گزارشی از سایت statista.com میبینیم که در سال 2019 بالغ بر دو میلیون برنامهی موبایل در فروشگاه گوگلپلی و 1.83 میلیون اپلیکیشن در اپ استور در دسترس قرار دارد.
همچنین بر اساس پیشبینیهایی که در این سایت آمده، در سال 2023 میلادی، جهان دیجیتال میزان 9935 میلیارد دلار آمریکا بابت دانلود برنامهها و یا تبلیغات اپلیکیشنها مبادلهی ارزی خواهد داشت. و تمام اینها یعنی هرکسی میتواند با طراحی و راهاندازی اپلیکیشنهای موبایل، برای خودش و دیگران شغل ایجاد کند. در واقع این مشخص کنندهی نیاز برنامهنویسها به یک فریمورک آسان و منعطف است که در حال حاضر یکی از بهترین فریمورکهای موبایل React Native است.
ریاکت نیتیو یا react native راهی برای پیشرفت
جردن واک به اینجای مصاحبه که رسید درخواست استراحت و تنفس کرد، اما تا آمدیم از جایمان بلند شویم دیدیم جردن واک خودش رفته و دو تا چای دبش ریخته و آورده! یک نگاه به ماگها انداختیم و دیدیم لوگوی فیسبوک روی ماگها بدجوری چشمک میزند! خلاصه آقای مهندس واک گفت این چای، چای ایرانیست و بهتازگی از اینترنت سفارش داده است.
بعد هم کلی با ماگهایش تبلیغ شرکتشان را کرد و حتی در فرصت تنفس هم دست از تبلیغ برنداشت! بعد هم گفت استفاده از ری اکت نیتیو پلی برای پیشرفت بیشتر فیسبوک بوده و کلی خودش را بابت اختراعش تحویل گرفت. پرسیدیم:
چرا ری اکت نیتو ( React Native ) یکی از مهمترین فریم ورکهای موبایل است؟ و کاربرد ری اکت نیتیو چیست؟
جردن واک یک قلپ چای خورد و گفت: مهمترین چیزی که برنامه نویسان موبایل به دنبال آن هستند این است که چگونه برنامهای بسازند که استفاده از آن، برای کاربران راحت باشد و سرعت بالاتری را به کاربران ارائه دهد.
ریاکت نیتیو این قابلیت را دارد؛
یعنی برنامهنویسان موبایل میتوانند با استفاده از ری اکت نیتیو برنامههایی بسازند که بدون نیاز به کدنویسی مجدد، روی پلتفرمهای دیگر هم قابل اجرا باشند. بهزبان ساده شما یک برنامه را فقط یک بار کدنویسی میکنید اما همان برنامه قابلیت اجرا شدن روی هردو سیستم عامل اندروید و iOS را دارد. علاوه بر این هنگام آپدیت کردن برنامهها و اضافه کردن بخشهای جدید به برنامه شما حداقل نیاز به کدنویسی جدید را خواهید داشت و با حداکثر چند خط کدنویسی، قابلیت مورد نظر را به اپلیکیشن خود اضافه میکنید.
ری اکت نیتیو ابتدا برای سیستم عامل iOS طراحی شد اما در سال 2015 نسخهی اندروید آن هم ارائه شد و برای استفادهی عموم بهصورت رایگان روی سایت GitHub قرار گرفت و هماکنون یکی از پر طرفدارترین فریمورکهای ارائه شده در این سایت است. در آخرین رتبه بندی github در جایگاه دوم قرار دارد. البته به سیستم رایدهی github اشکالاتی وارد است؛ اینکه صرفا رایها را در نظر میگیرد و تعداد دانلودها در این رتبه بندی حساب نمیشود.
احتمالا با google trend هم آشنایی داشته باشید. کافیست بازهی سال 2015 تا 2016 را بررسی کنید تا متوجه شوید React Native بعد از ارائهی عمومیاش با چه استقبالی روبهرو شده است:
نمودار گوگل ترند که نشان میدهد ری اکت نیتیو ( React Native ) توانسته در مدت کوتاهی بعد از ساختش ابزارهای توسعه اندروید و iOS را از لحاظ علاقهی کاربران پشت سر بگذارد.
پیشنهاد مقاله: همه چیز درباره React JS
یک بار کدنویسی و ساختن یک برنامه برای دو پلتفرم
از آقای واک گله کردیم که آیا داری لقمه را دور سرمان میچرخانی یا هندوانه زیر بغلمان میگذاری؟ که ایشان به زبان شیرین فارسی گفتند دارم یادتان میدهم چهطور با یک تیر دو هندوانه را بزنید! برایشان توضیح دادیم که با یک تیر دو نشان را میزنند و ایشان فرمود: حالا همان که تو میگویی! منظور را بگیر.
ما هم منظور را گرفتیم، درحقیقت منظورشان این بود که با یک بار کد نویسی میتوان هم برنامهی اندروید را ساخت و هم iOS . از ایشان خواستیم ری اکت نیتیو را با بقیهی فریمورکهای معروف مقایسه کند تا ما اهمیت یادگیری ریاکت نیتیو را با گوشت و پوست و استخوان درک کنیم. ایشان هم در یک جدول جان مطلب را ادا کردند.
جدول مقایسه ری اکت نیتیو و مهمترین فریمورکهای موبایل
فریم ورکهای پیشتاز | ویژگیهای مثبت | ویژگیهای منفی |
ری اکت (React) | 1. Dom مجازی برای تجربههای بهتر
2. کامپوننتهای نصب شده 3. جریان یکطرفه کد برای یک کد پایدار 4. گستردگی ابزارها
|
1. سندنگاری ضعیف
2. دارای اطناب و کمی سختتر از جاواسکریپت |
وی یو (vue) | 1. کوچک و سریع
2. آسان در پیدا کردن خطاها 3. سندنگاری واضح 4. آسان برای ترکیب با دیگر برنامهها |
1. کامپوننتهای پایدار چندانی ندارد
2. انعطافپذیری کم |
انگولار (Angular) | 1. سرعت بالا
2. مناسب برای MVPها و پیشطراحی 3. مناسب برای برنامههای تکصفحه 4. پشتیبانی اسکریپت برای برنامههای حجیم 5. آسان برای نوشتن تستها |
1. یادگیری کاملا دشوار
2. مشکل داشتن در بارگذاری مقدار زیاد داده 3. فقدان سندنگاری CLI |
فلوتر (Flutter) | 1. مناسب برای MVP
2. کدهای کمتری ارایه میکند 3. ابزار cross-platform |
1. فقط برای برنامههای موبایل
2. کتابخانههای محدود 3. پشتیبانی محدود برای برنامههای Apple TV و Android TV |
امبر (Ember) | 1. استفاده از ملحقات برای ارائههای بهتر
2. ابزار سریع 3. سندنگاری واضح 4. داشتن عیب یاب مخصوص |
1. دشوار در آموزش
2. رندر شدن با سرعت پایین 3. نامناسب برای پروژههای کوچک |
مزایا ومعایب react native
از واک خواستیم که اگر وقت اجازه میدهد برایمان دربارهی مزایا و معایب react native توضیح بدهد که این سوال با استقبال ایشان مواجه شد و همزمان که داشتند برای خودشان نوشابه باز میکردند این بیت حافظ را هم زیرلب جوری که ما حتما بشنویم، خواندند:
دریاست مجلس او، دریاب وقت و دُر یاب
هان ای زیان رسیده، وقت تجارت آمد
فواید ریاکت نیتیو ( React Native ) چیست؟
پشتیبانی Cross Platform
ویژگی بارز React Native این است که به پلتفرم خاصی محدود نیست؛ یک فریمورک واحد میتواند برای کدنویسی، طراحی و عرضهی اپهای گوناگون برای پلتفرمهای مختلف مثل Androidو iOS مورد استفاده قرار بگیرد. این ویژگی به طور قابل ملاحظهای موجب صرفهجویی در زمان و هزینههای ساخت یک اپلیکشن موبایل میشود.
DOM مجازی
در این قسمت، تغییراتی که در صفحه رخ میدهد، پیش از رِندِر شدن صفحهی مورد نظر، در حافظهی سیستمی ذخیره میشوند (DOM ) مخفف Document Object Model بهعنوان واسطی که نه به زبان خاصی وابسته است و نه به پلتفرم خاصی! و به دولوپر این امکان را میدهد تا به محتوا، ساختار و طرز کار سندها دسترسی داشته باشد و به طور پویا بتواند آنها را تغییر دهد و بهروزرسانی کند.
رندرینگ سمت سرور
رِندِر سمت سرور برای استفاده در React ایجاد شد که باعث سادگی بیشتر برای تغییرات و رِندِر DOM و کدها میشود.
شرح خطاها
یکی از بهترین مواردی که به درد یک دولوپر تازهکار میخورد، شرح خطاها است؛ اگر دولوپری که برای اولین بار با React کار میکند خطایی ایجاد کند، سیستم دقیقاً به او میگوید که چه چیزی را اشتباه انجام داده است، این خطا در کدام خط کد قرار دارد و چگونه میشود آن را اصلاح کرد.
سیستم رویداد اختصاصی
React به توسعهدهندگان این امکان را میدهد تا رویداد ( Event ) اختصاصی خود را بسازند که پس از آن در مجموعهی دادهها بهروزرسانی میشود. کتابخانههای مختلفی وجود دارند که به توسعهدهندگان کمک میکنند تا بهراحتی کدهای مربوط به هر نوع Callback را به مدلی با منطق برنامهنویسی بهتر انتقال دهند.
روش کدنویسی دیکلِرِتیو
شیوهی کدنویسی تشریحی (Declarative) به یکی از دلایل اصلی محبوبیت React و React Native تبدیل شده است؛ برنامهنویسان میتوانند کدهایی بنویسند که خوانا و انعطافپذیر است و قابل دستکاری نیستند. این کدها باعث ایجاد رابطهای کاربری(UI) شگفتانگیزی شدهاند که تنها با نگاه کردن به کدهایشان، قابلفهماند.
کدنویسی قابل پیشبینیتر
React به دِوِلوپرها این امکان را میدهد تا هر فایل جاواسکریپتی را با کامپوننت React درون آن باز و حالتهای قابلقبول آن کامپوننت را درک کنند و تنها با نگاه کردن به فایل، متوجه طرز کار و رفتار آن فایل بشوند.
توانایی انجام موازی کارها
فیسبوک فریمورکی به نام Async Display Kit ساخته که به توسعهدهندگان این امکان را میدهد تا پردازشهای مختلف را از بار محاسبات تِرِد اصلی خارج کنند که باعث روانتر شدن انیمیشنها میشود. این کار را میتوان با استفاده از وبورکرها نیز انجام داد اما در این روش محدودیتهایی هم وجود خواهد داشت؛ در واقع، وبورکرها فرآیند پیچیدهای در دیکد کردن تصاویر دارند و قابلیت سنجش متن را ندارند و طراحی لِیاوت در آنها سختتر است، این در صورتی است که تمامی این کارها با استفاده از ری اکت نیتیو به سادگی قابل انجام است.
تشخیص حرکات پیچیده
در محیط وب، موارد بسیاری وجود دارد که قابل لمس شدن (توسط صفحه نمایشهای لمسی) هستند اما ابزار مناسب یا نظم و ترتیب خاصی برای ساخت یک سیستم مربوط به حرکاتی که به خوبی و پیچیدگی سیستمهای تشخیص حرکات نیتیو باشد وجود ندارند. ری اکت نیتیو با فراهم کردن دسترسی به قابلیتهای نیتیو، این مسئله را نیز دچار تغییر و تحول کرده است (به عنوان مثال، طراحی Gesture برای لغوکردن تَسک در حال انجام، با لمس صفحه نمایش یا بازخورد مناسب به کاربر در هنگام لمس و برداشتن انگشت خود از صفحه)
دسترسی به امکانات نیتیو
React امکان دسترسی به امکانات و کامپوننتهای اختصاصی هر پلتفرم شامل ویجتهای نیتیو را فراهم میکند که بدون آنها اگر سعی کنید با استفاده از CSS ،HTML و JavaScript برای پیادهسازی این ویجتها اقدام کنید، نتیجهی کارتان پر از لَگ و تأخیر میشود و به درستی جواب نمیدهد.
بارگذاری سریعتر React Native
گزینههایی مثل Hot Reloading و Live Reloading را فراهم میکند که میتوانید برای نحوهی ریلود شدن اپ خود برای مشاهدهی تغییرات از آنها استفاده نمایید.
در روش Live که پیشفرض هم هست، اپلیکیشن پس از بهروزرسانی دادهها از صفحهی اول شروع به کار میکند که البته برای اپلیکیشنهای تک صفحهای مسئلهی مهمی نیست ولی اگر صفحهی مورد نظر چندلایه با صفحه اصلی فاصله داشته باشد، با روش Live کاربر باید از ابتدا مسیر قبلی را طی کند تا به صفحهی مورد نظر برسد.
در این مواقع، از روش Hot استفاده میشود که در آن پس از بهروزرسانی، وضعیت قبلی حفظ میشود. این گزینه همچنین چرخهی بازخورد را نیز کاهش میدهد که در نتیجه به دولوپر امکان صدور بهروزرسانیهای OTA را با رِندِر لحظهای میدهد.
خوانایی آسانتر
شیوهی کدنویسی این لایبرریها باعث آسانتر شدن الگوها و فرآیند کدزنی میشود که در نتیجه خواندن کدها برای سیستم و همچنین توسعهدهنده راحتتر میشود؛ برنامهنویس به سادگی میتواند کد را ببیند و خروجی آن را بفهمد (به جای آنکه نیاز باشد آن را رِندِر کند تا متوجه نحوهی عملکرد آن شود. )
مُشک آن است که خود ببوید؛ همان که عطار بگوید!
- آقای واک حالا بیارید آنچه دارید ز مردی و زور و بفرمایید که این محصول شما تاکنون توسط چه اپلیکیشنهایی استفاده شده که نشانهی اعتبار این فریمورک باشد؟
آقای واک هم که میخواست نشان دهد به زبان فارسی مسلط است سریعا گفت شیر کو تا کف و سر پنجه مردان بیند و بعد فهرستی از محبوبترین اپلیکیشنهایی که از ریاکت نیتیو استفاده میکنند را به ما ارائه داد.
ری اکت نیتیو ( React Native ) و اپلیکیشنهای محبوب موبایل
- فیسبوک Facebook (شبکهی اجتماعی)
- اینستاگرام Instagram (شبکهی اجتماعی)
- اسکایپ Skype (پیامرسان)
- تسلا Tesla (خودروسازی)
- بلومبرگ Bloomberg (رسانهی جمعی)
- ساوندکلاود پلاس SoundCloudPulse (اشتراک موزیک)
- ویکس wix (طراحی وبسایت)
- دیلیوری com (سفارش غذا)
- بایدو موبایل Baidu Mobile (موتور جستجو)
- والمارت Walmart (خرده فروشی)
فهرست زیر، برداشته شده از سایت github است
و مهمترین اپلیکشنهایی را که از ری اکت نیتیو استفاده میکنند، نشان میدهد!
ری اکت نیتیو و تعادل بین ضربات میخ و نعل
- آقای واک یعنی این ریاکت نیتیو شما هیچ ایرادی ندارد؟ بیاید اینهمه به میخ زدهاید یکی هم به نعل بزنید!
اینجا بود که مهندس واک دوباره ما را شگفتزده کرد و گفت بله ما فیسبوکیها اگر یک سوزن به دیگران بزنیم یک جوالدوز هم به خودمان میزنیم!
معایب ری اکت نیتیو چیست؟
عیبیابی
برای اشکالزدایی از یک برنامهی نوشته شده با ری اکت نیتیو روش نسبتاً پیچیدهای وجود دارد. شما باید به روشی که این فریمورک برای تولید کد استفاده میکند توجه کنید و بر اساس آن تصمیم بگیرید.
پیکربندی
گاهی اوقات هماهنگی برای کتابخانههای محلی در اپلیکیشنهای ری اکت نیتیو نیاز به پیکربندی زیادی دارد. برای مثال استفاده از نقشه گوگل در این فریم ورک نیاز به کار زیادی دارد در حالی که در اپلیکیشنهای بومی اندروید این کار خیلی سادهتر انجام میشود.
صد در صد نیتیو نبودن ری اکت نیتیو
علی رغم تلاشهای فیسبوک اپلیکیشنهای ری اکت نیتیو کاملا نیتیو نیستند. بهعنوان مثال نیتیو جیمیل را در نظر بگیرید. این اپلیکیشن شامل یک کارگر است که اینباکس شما را چک میکند. اکانت جیمیل شما علاوه بر خود اپلیکیشن با کل سیستم موبایل همگاهسازی شده است. بعلاوه جی میل میداند درصورتی که شما از وای فای استفاده نمیکنید باید همگاهسازی را کاهش دهد.
اما با ریاکت نیتیو پیوند خیلی نزدیک با سیستم ندارید. اکانت شما در اپلیکیشن ذخیره میشود نه در سیستم. بهعلاوه توجه به وای فای در مقایسه با دیتای موبایل سختتر است که برای بعضی اپلیکیشنها اشکالی ندارد اما برای برخی دیگر میتواند مهم باشد.
امکان نیتیو کردن به مقدار نیاز
نباید از ری اکت نیتیو به تنهایی استفاده کنید. بلکه میتوانید برای بیشتر اپلیکیشنها از ریاکت و برای قسمتهای مهم که باید بطور کامل در سیستم نیتیو گنجانده شوند از نیتیو استفاده کنید.
یکی از نقدهای وارد شده به ریاکت نیتیو این است که این دسته از اپلیکیشنها به معنای واقعی نیتیو نیستند. اما لزوما نباید بطور کامل نیتیو باشند. شما میتوانید با افزودن مقداری کد جاوا/Swift برای برخی فیچرها و موارد خاص آن را به مقداری که نیاز دارید نیتیو کنید.
ما که واقعا تحت تاثیر صداقت آقای واک قرار گرفتیم و گفتیم: صداقت شما در این زمینه واقعا مثالزدنی است. اما نمیترسید آقای زاکربرگ شما را اخراج کند؟
با این سوال آقای واک کاملاً جدی شدند و گفتند ما میکوشیم برای فردای بهتر و هرکه عیب کارش را بداند یک قدم از کسی که گمان میکند کارش بیعیب و نقص است جلوتر است.
البته ما به ایشان پیشنهاد دادیم که اگر کار به اخراج کشید برگردد و توی صورت آقای زاکربرگ زل بزند و بگوید رییس! خود شکن آیینه شکستن خطاست!
این را هم بگوییم که ایشان وعده داد به مرور زمان عیبهای ری اکت نیتیو ( React Native ) را رفع کنند.
مجتمع دانش و فناوری بامداد ارائه میکند: بوتکمپ برنامهنویسی منتهی به شغل سی شارپ
سوال بعدی ما درمورد پیشنیازهای یادگیری ری اکت نیتیو بود:
برای یادگیری ری اکت نیتیو ( React Native ) چه چیزهایی را باید بلد باشیم؟
همانطور که در مسیر گفتگو اشاره کردیم، ری اکت نیتیو یکی از کتابخانههای توسعه داده شده با زبان جاوا اسکریپت است. بنابراین شما برای آنکه بتوانید آن را یادبگیرید پیش از هر چیزی نیاز دارید که زبان برنامهنویسی جاواسکریپت را بلد باشید.
در کنار جاواسکریپت، باید درک خوبی از زبانهای HTML و CSS داشته باشید تا بتوانید بهراحتی با نحوه قرار دادن و استایلدهی عناصر ری اکت نیتیو کنار بیایید.
برای شروع به یادگیری زبانهای HTML و CSS میتوانید از آموزش ویدیویی رایگان و فارسی HTML و CSS منتشر شده در آی او دیلی استفاده کنید.
همینطور بهترین منابع برای یادگیری ری اکت نیتیو ( React Native ) داکیومنتهای مربوط به React native است که در سایت گیتهاب در دسترس عموم قرار گرفته است. همینطور اطلاعاتی در این زمینه را میتوانید از سایت github دریافت کنید.
سایتhandlebarlabs نیز با فایلها و ویدئوهای آموزشیاش کمک شایانی در زمینهی یادگیری ریاکت نیتیو به شما خواهد کرد
آخرین جرعهی این چای خفن را تو بنوش!
بالاخره این مصاحبه تمام شد و بعد از نوشیدن آخرین چای ایرانی در محضر آقای جردن واک با این جمله از ایشان مواجه شدیم که گفتند گل سرخ و سفید و ارغوانی فراموشم نکن تا میتوانی. ما هم قول دادیم ریاکت نیتیو را در یک مقالهی کامل و جامع به مخاطبین زیادی هدیه بدهیم تا بازار فیسبوک مثل همیشه داغ بماند.
جمع بندی: ری اکت نیتیو چه بود و با ما چه کرد؟!
ری اکت نیتیو ( React Native ) یک فریمورک جذاب است که طراحان اپلیکشنها را قادر میسازد با دانش جاواسکریپت خودشان برنامههای شگفت انگیزی بسازند. ریاکت نیتیو با سرعت و بازدهی بالا کمک میکند کدهایی منطبق با اندروید، آیاواس و وب نوشته شود که ضریب اشتباه و ریسک و تجربهپذیری کمتری داشته باشند. مسیر ریاکتنیتیو تازه است و به مرور زمان گستردهتر و پیشرفتهتر میشود.
اگر تیم شما توان مدیریت یک بلاتکلیفی را در باب استفاده از دانشی جدی، دارد؛ و اگر میخواهید اپلیکیشنهایی برای موبایل بسازید که روی پلتفورمهای مختلف قابل اجرا باشند، بهتر است که به سمت انتخاب و استفاده از ریاکت نیتیو قدم بردارید.
منابع اصلی:
https://www.oreilly.com/library/view/learning-react-native/9781491929049/ch01.html
https://blog.risingstack.com/the-history-of-react-js-on-a-timeline/
https://sensortower.com/blog/app-revenue-and-downloads-1h-2019
https://www.statista.com/topics/1002/mobile-app-usage/
https://medium.com/@thinkwik/react-native-what-is-it-and-why-is-it-used-b132c3581df
https://gearheart.io/blog/top-10-web-development-frameworks-2019-2020/