React Native چیست؟
توسط Ali Raghimi
React Native یک فریمورک جاوا اسکریپت برای نوشتن برنامههای کاربردی موبایلی واقعی و بومی برای iOS و Android است. این بر اساس React، کتابخانه جاوا اسکریپت فیس بوک برای ایجاد رابط کاربری است، اما به جای هدف قرار دادن مرورگر، پلتفرم های تلفن همراه را هدف قرار می دهد. به عبارت دیگر: توسعهدهندگان وب اکنون میتوانند برنامههای تلفن همراهی بنویسند که واقعاً «بومی» به نظر میرسند و به نظر میرسند، همه از راحتی یک کتابخانه جاوا اسکریپتی که قبلاً آن را میشناسیم و دوست داریم. به علاوه، از آنجایی که بیشتر کدهایی که می نویسید را می توان بین پلتفرم ها به اشتراک گذاشت، React Native توسعه همزمان آن را برای اندروید و iOS آسان می کند.
شبیه به React for the Web، برنامههای React Native با استفاده از ترکیبی از نشانهگذاری جاوا اسکریپت و XML-esque، معروف به JSX نوشته میشوند. سپس، در زیر هود، React Native "پل" API های رندر بومی را در Objective-C (برای iOS) یا جاوا (برای اندروید) فراخوانی می کند. بنابراین، برنامه شما با استفاده از مؤلفههای واقعی رابط کاربری تلفن همراه، نه وبنما، رندر میشود و مانند هر برنامه تلفن همراه دیگری به نظر میرسد. React Native همچنین رابط های جاوا اسکریپت را برای API های پلتفرم نشان می دهد، بنابراین برنامه های React Native شما می توانند به ویژگی های پلت فرم مانند دوربین تلفن یا مکان کاربر دسترسی داشته باشند.
React Native در حال حاضر از iOS و Android پشتیبانی می کند و پتانسیل گسترش آن را به پلتفرم های آینده نیز دارد. در این کتاب، هم iOS و هم اندروید را پوشش خواهیم داد. اکثریت قریب به اتفاق کدهایی که ما می نویسیم، چند پلتفرمی خواهند بود. و بله: شما واقعاً می توانید از React Native برای ساخت برنامه های تلفن همراه آماده برای تولید استفاده کنید! برخی از حکایت ها: فیس بوک، Palantir، و TaskRabbit در حال حاضر از آن در تولید برنامه های کاربردی رو به رو کاربر استفاده می کنند.
مزایای React Native
این واقعیت که React Native در واقع با استفاده از APIهای رندر استاندارد پلتفرم میزبان خود رندر میکند، آن را قادر میسازد تا از اکثر روشهای موجود توسعه برنامههای چند پلتفرمی مانند Cordova یا Ionic متمایز شود. روشهای موجود برای نوشتن برنامههای تلفن همراه با استفاده از ترکیبی از جاوا اسکریپت، HTML و CSS معمولاً با استفاده از وبنماها ارائه میشوند. در حالی که این رویکرد می تواند کارساز باشد، با معایبی نیز همراه است، به خصوص در مورد عملکرد. علاوه بر این، آنها معمولاً به مجموعه عناصر UI بومی پلتفرم میزبان دسترسی ندارند. هنگامی که این چارچوبها سعی میکنند عناصر بومی UI را تقلید کنند، نتایج معمولاً کمی بد به نظر میرسند. مهندسی معکوس تمام جزئیات دقیق چیزهایی مانند انیمیشن ها به تلاش زیادی نیاز دارد و آنها می توانند به سرعت قدیمی شوند.
در مقابل، React Native در واقع نشانهگذاری شما را به عناصر UI واقعی و بومی ترجمه میکند و از ابزارهای موجود برای ارائه نماها در هر پلتفرمی که با آن کار میکنید، استفاده میکند. علاوه بر این، React جدا از رشته UI اصلی کار می کند، بنابراین برنامه شما می تواند عملکرد بالا را بدون از بین بردن قابلیت حفظ کند. چرخه بهروزرسانی در React Native مانند React است: هنگامی که props یا وضعیت تغییر میکند، React Native نماها را دوباره نمایش میدهد. تفاوت عمده بین React Native و React در مرورگر این است که React Native این کار را با استفاده از کتابخانه های UI پلت فرم میزبان خود به جای استفاده از نشانه گذاری HTML و CSS انجام می دهد.
برای توسعهدهندگانی که عادت به کار بر روی وب با React دارند، این بدان معناست که میتوانید برنامههای تلفن همراه را با عملکرد و ظاهر و احساس یک برنامه بومی در حالی که از ابزارهای آشنا استفاده میکنید بنویسید. React Native همچنین نشان دهنده بهبودی نسبت به توسعه معمولی موبایل در دو حوزه دیگر است: تجربه توسعهدهنده و پتانسیل توسعه بین پلتفرمی.
تجربه توسعهدهنده
اگر قبلاً برای موبایل توسعه داده اید، ممکن است از آسانی کار با React Native شگفت زده شوید. تیم برنامهنویس آن ابزارهای توسعهدهنده قوی و پیامهای خطای معنیداری را در چارچوب ایجاد کرده است، بنابراین کار با ابزارهای قوی بخشی طبیعی از تجربه توسعه شما است.
به عنوان مثال، از آنجایی که React Native «فقط» جاوا اسکریپت است، نیازی به بازسازی برنامه خود ندارید تا تغییرات خود را مشاهده کنید. در عوض، میتوانید Command+R را بزنید تا برنامهتان بهروزرسانی شود، درست مانند هر صفحه وب دیگری. تمام آن دقایقی که صرف انتظار برای ساخت اپلیکیشن شما میشود، میتواند اضافه شود، و در مقابل، چرخه تکرار سریع React Native مانند یک موهبت الهی است.
علاوه بر این، React Native به شما امکان می دهد از ابزارهای هوشمند اشکال زدایی و گزارش خطا استفاده کنید. اگر با ابزارهای توسعهدهنده کروم یا سافاری راحت هستید (شکل زیر)، خوشحال خواهید شد که بدانید میتوانید از آنها برای توسعه تلفن همراه نیز استفاده کنید. به همین ترتیب، میتوانید از هر ویرایشگر متنی که ترجیح میدهید برای ویرایش جاوا اسکریپت استفاده کنید: React Native شما را مجبور نمیکند که در Xcode برای توسعه iOS یا Android Studio برای توسعه اندروید کار کنید.
علاوه بر بهبودهای روزانه در تجربه توسعه شما، React Native همچنین این پتانسیل را دارد که بر چرخه انتشار محصول شما تأثیر مثبت بگذارد. به عنوان مثال، اپل اجازه می دهد تا تغییرات مبتنی بر جاوا اسکریپت در رفتار یک برنامه بدون نیاز به چرخه بررسی اضافی، از طریق هوا بارگذاری شود.
همه این امتیازات کوچک باعث صرفهجویی در زمان و انرژی شما و توسعهدهندگان دیگر میشود و به شما امکان میدهد بر روی بخشهای جالبتر کارتان تمرکز کنید و در مجموع سازندهتر باشید.
استفاده مجدد از کد و به اشتراک گذاری دانش
کار با این تکنولوژی میتواند به طور چشمگیری منابع مورد نیاز برای ساخت اپلیکیشن های موبایل را کاهش دهد. هر توسعهدهندهای که میداند چگونه کد React بنویسد، اکنون میتواند وب، iOS و اندروید را هدف قرار دهد، همه با مهارتهای یکسان. React Native با حذف نیاز به توسعهدهندگان بر اساس پلتفرم هدفشان، به تیم شما اجازه میدهد سریعتر تکرار کند و دانش و منابع را به طور مؤثرتری به اشتراک بگذارد.
علاوه بر دانش مشترک، بسیاری از کدهای شما نیز قابل اشتراک گذاری هستند. همه کدهایی که می نویسید چند پلتفرمی نیستند و بسته به عملکردی که در یک پلتفرم خاص نیاز دارید، ممکن است گاهی اوقات نیاز داشته باشید که در Objective-C یا Java فرو بروید. (خوشبختانه، این خیلی بد نیست، و ما در فصل ۷ نحوه عملکرد به اصطلاح ماژولهای بومی را توضیح خواهیم داد.) اما استفاده مجدد از کد در پلتفرمها به طرز شگفتآوری با React Native آسان است. به عنوان مثال، همانطور که در سخنرانی اصلی React Europe 2015 ذکر شد، برنامه مدیریت تبلیغات فیس بوک برای اندروید ۸۷ درصد از پایگاه کد خود را با نسخه iOS به اشتراک می گذارد. آخرین برنامه ای که در این کتاب به آن نگاه خواهیم کرد، یک برنامه فلش کارت است که از کل کد بین اندروید و iOS استفاده می کند. شکست دادن آن سخت است!
خطرات و معایب
مانند هر چیز دیگری، استفاده از React Native بدون معایب نیست، و اینکه آیا React Native برای تیم شما مناسب است یا نه، واقعاً به وضعیت فردی شما بستگی دارد.
بزرگترین خطر احتمالاً بلوغ React Native است، زیرا پروژه هنوز نسبتاً جوان است. پشتیبانی از iOS در مارس ۲۰۱۵ منتشر شد، و پشتیبانی از اندروید در سپتامبر ۲۰۱۵ منتشر شد. مستندات مطمئناً جای بهبود دارند و همچنان در حال تکامل هستند. برخی از ویژگیها در iOS و Android هنوز پشتیبانی نمیشوند و جامعه همچنان در حال کشف بهترین شیوهها است. خبر خوب این است که در اکثریت قریب به اتفاق موارد، شما می توانید خودتان پشتیبانی از API های از دست رفته را پیاده سازی کنید.
از آنجایی که React Native لایه دیگری را به پروژه شما معرفی می کند، همچنین می تواند اشکال زدایی را مویی تر کند، به خصوص در تقاطع React و پلت فرم میزبان.
React Native هنوز جوان است و اخطارهای معمول در کنار کار با فناوری های جدید در اینجا اعمال می شود. با این حال، به طور کلی، من فکر می کنم شما خواهید دید که مزایای آن بیشتر از خطرات است.
خلاصه
React Native یک چارچوب مهیج است که توسعه دهندگان وب را قادر می سازد تا با استفاده از دانش جاوا اسکریپت موجود، اپلیکیشن های موبایل قوی ایجاد کنند. این برنامه توسعه سریعتر موبایل و اشتراکگذاری کد کارآمدتر را در iOS، Android و وب ارائه میکند، بدون اینکه تجربه کاربر نهایی یا کیفیت برنامه را به خطر بیندازد. معاوضه این است که جدید است و هنوز در حال پیشرفت است. اگر تیم شما می تواند عدم قطعیت ناشی از کار با فناوری جدید را کنترل کند و می خواهد برنامه های تلفن همراه را برای بیش از یک پلتفرم توسعه دهد، باید به React Native نگاه کنید.
پست های توصیه شده
کلان داده
14 مهر, 1402
تحول دیجیتال
14 مهر, 1402
تجزیه و تحلیل داده ها
14 مهر, 1402