ریاکت نیتیو چیست؟ عصر اپلیکیشنهای هیبریدی تلفن همراه
ریاکت نیتیو در سال 2015 راهاندازی شد و با سرعت زیادی، دنیای توسعهی موبایلی را در اختیار گرفت.
در دنیای دیجیتالیِ امروز، داشتن یک اپلیکیشن موبایلی برای خیلی از کسبوکارها بسیار بااهمیت است. انتخاب پلتفرم مناسب برای توسعهی اپلیکیشن موبایلی هم به همان میزان سخت است.
ممکن است در موردِ ریاکت نیتیو، فلاتر (Flutter)، یونیک(Ionic) و یا کوردوا (Cordova) چیزهایی شنیده باشید. همهی اینها پلتفرمهایی برای ساخت اپلیکیشنهای موبایلی ترکیبی (Hybrid) هستند. منظور از هیبرید یا دوگانه این است که در این پلتفرمها میتوان نسخههای اندروید و iOS یک اپلیکیشن را در یکجا کدنویسی کرد.
در این مطلب از وبسایت، میخواهیم بررسی کنیم که ریاکت نیتیو چیست و آیا به درد کار شما میخورد؟ همچنین بررسی میکنیم که چه زمانی استفاده از ریاکت نیتیو برای ساختن اپلیکیشنهای نیتیو برای اندروید و iOS برای شما منطقی است.
ریاکت نیتیو چیست؟
ریاکت نیتیو یک فریمورک (Framework) جاوا اسکریپت برای توسعهی اپلیکیشن موبایل است که میتواند بهصورت نیتیو روی اندروید و iOS اجرا شود. ریاکت نیتیو بر پایهی ریاکت جی اس (ReactJS) است که توسط فیسبوک توسعهیافته است. ریاکت جی اس یک زبان برنامهنویسی نزدیک به زبان نوشتار (Declarative) است. این زبان یک فریمورک بر اساس کامپوننت برای توسعهی رابط کاربری وب (Web User Interface) است. در این مقاله میتوانید اطلاعات بیشتری در مورد ریاکت جی اس به دست بیاورید.
هر دور ابزار ریاکت بسیار معروف و پراستفاده هستند. در زمان نوشتن این مقاله، ریاکت جی اس و ریاکت نیتیو به ترتیب، پنجمین و بیست و پنجمین جایگاه را در بین پرستارهترین مخازن کدنویسی در GitHub دارند.
اگر خودتان از قبل با ریاکت جی اس آشنا هستید باید بتوانید بهراحتی ریاکت نیتیو را بهعنوان یک پلتفرم مشابه استفاده کنید. زیرا در این دو پلتفرم کتابخانههای مشابه زیادی وجود دارند.
کدها بین پلتفرمها به اشتراک گذاشته میشوند
ریاکت توسط کدهایی صرفاً به زبان جاوا اسکریپت کامپایل میشوند. این کار به برنامهنویس اجازه میدهد که بتواند از کد نوشتهشده در اندروید یا iOS مجدداً استفاده کند. برای توضیح اینکه چطور کد به اشتراک گذاشته میشود؛ مهم است بدانیم که اپلیکیشن موبایل میتواند به دو قسمت مجزا شکسته شود:
- رابط کاربری، که از کامپوننتهایی که شما بهعنوان کاربر با آنها در ارتباط هستید. (مثل دکمهها، فیلدهای ورودی، اسلایدر و غیره)
- لایهی منطقی (مثل تغییرات دادهها، محاسبات، ذخیرهسازی و واکشی و اجرای کدها)
در ادامه، میخواهیم به مدیریت اینها در یک محیط کدنویسی نگاهی کنیم.
بررسی کدنویسی
همانند ریاکت جی اس، ریاکت نیتیو هم از JSX استفاده میکند. JSX یک زبان علامتگذاری XML برای توسعهی رابط کاربری است که جایگزین HTML و CSS میشود. در JSX ، کامپوننتهای رابط کاربری به کامپوننتهای نیتیو پلتفرم خاص موردنظر کامپایل میشوند که برای کاربر استفادهکننده از اپلیکیشن، تجربهی مشابه و سریعی ایجاد میکند.
برای مثال، یک کامپوننت متنی در ریاکت نیتیو، روی iOS بهصورت UILabel و روی اندروید بهصورت TextView ، بهصورت نیتیو رِندر میشود. بعضی از فریمورکهای هیبرید دیگر، از کامپوننتهای مبتنی بر وب استفاده میکنند که HTML و CSS را رندر میکنند. این کار باعث میشود درنهایت تجربهی کاربری کندی به وجود بیاید.
// Hello world in React Native import React from 'react'; import { Text, View } from 'react-native'; function HelloWorldApp() { return ( <View style={{ }} flex: 1, justifyContent: "center", alignItems: "center" }}> <Text>Hello, world!</Text> </View> ) } export default HelloWorldApp;
اپلیکیشنهای نیتیو که بهصورت مستقل ساخته میشوند؛ عموماً منطقهای مشترک زیادی باهم دارند. اگر قرار باشد همین اپلیکیشنها را در دو زبان برنامهنویسی مختلف بنویسیم و هرکدام را جداگانه مورد تست قرار دهیم؛ هزینهی توسعهی آن احتمالاً دو برابر خواهد بود.
با استفاده از ریاکت نیتیو، نسخهی وب اپلیکیشن شما منطق مشابهی با نسخهی موبایل آن خواهد داشت. این ویژگی باعث حفظ ثبات اپلیکیشن در پلتفرمهای مختلف و صرفهجویی در زمان و هزینهها میشود. بهجای کدنویسی به دو زبان مختلف و استخدام توسعهدهندگانی که در هر دو زبان اندروید و iOS مهارت کامل داشته باشند؛ میتوانید تیمی از توسعهدهندگان جاوا اسکریپت تشکیل بدهید که روی یک زبان کدنویسی کنند.
تجربهی توسعهدهنده بهبودیافته
با توجه به اینکه ریاکت نیتیو از تکنولوژیهای اساسی وب استفاده میکند؛ با اعمال تغییرات در کد در زمان توسعه، صفحهی برنامه بهصورت لحظهای میتواند تغییرات را بارگذاری مجدد کند. در مقایسه با زبانهای مستقل توسعهی اندروید و iOS که برای اعمال تغییرات باید کل کدها مجدداً کامپایل شده و اپلیکیشن دوباره اجرا شود تا صفحهی برنامه بهروز شود؛ این مزیت بزرگی است.
امروزه، جاوا اسکریپت پراستفادهترین زبان برنامهنویسی در دنیا است. مهمترین مزایای آن داشتن کتابخانهها و ابزارهای متنباز مختلف و بسیار زیاد برای استفادهی مجدد توسعهدهندهها است.
اگر شما یک تیم از توسعهدهندگان وب دارید؛ تغییر از ریاکت جی اس به ریاکت نیتیو برای شما کار راحتی خواهد بود. هرچند ممکن است در شرایطی قرار بگیرید که استفاده از پشتیبانی توسعهدهندههای نیتیو (اندروید و iOS) برای سؤالاتی که در مورد پلتفرم برایتان پیش خواهد آمد؛ مفید باشد. پیدا کردن این توسعهدهندهها، زمانی که به آنها نیاز پیدا خواهید کرد میتواند شروع چالشهای شما باشد.
ریاکت نیتیو همیشه انتخاب درستی نیست!
ریاکت نیتیو یک ابزار فوقالعاده برای تیمهایی است که با تکنولوژیهای تحت وب آشنا هستند. اما برای تیمهایی که میخواهند اپلیکیشنهای پیچیدهتری بسازند؛ احتمالاً ریاکت چندان مفید نخواهد بود.
برای مثال، اگر در طول توسعهی اپلیکیشن بخواهید فرایندهای سریعی را انجام دهید و همهی کارها توسط یک تیم انجام شود؛ ریاکت نیتیو انتخاب بسیار خوبی است. اما اگر در تلاش برای ساخت اپلیکیشن کاملی با این ویژگیهای زیر هستید:
- اپلیکیشنی که از کامپوننتهای سفارشی رابط کاربری زیادی استفاده میکند
- انیمیشنهای سنگینی را اجرا میکند
- از APIهای مرتبط با دستگاههای زیادی استفاده میکند
- و یا از آخرین ویژگیها و امکانات ارائهشده توسط اندروید و iOS استفاده میکند
آنگاه بهتر است به دنبال زبانهای توسعهی مستقل باشید. در این مواقع معمولاً باید به یک زبان دیگر بهعنوان لایهای بین کد خودتان و پلتفرم اندروید یا iOS تکیه کنید.
بنابراین، اگر یک ویژگی جدید از طرف Apple یا Google ارائه شود؛ ممکن است کمی زمان ببرد تا زبان وابستهی مورداستفادهی شما آن را پشتیبانی کند؛ اگر بکند!
چه کسانی از ریاکت نیتیو استفاده میکنند؟
کمپانیهای بزرگی هستند که از ریاکت نیتیو استفاده میکنند. بهعنوان مثال، سازندگان فروشگاههای فیسبوک و تبلیغات آن، کمپانی تسلا (Tesla)، بلومبرگ (Bloomberg) و بسیاری شرکتهای بزرگ دیگر از آن استفاده میکنند.
تیم بلومبرگ ادعا میکند که در بدترین شرایط، جمعآوری یک تیم توسعه، نیمی از زمانی را که برای جمعآوری تیم ریاکت نیتیو استفاده شد را نیاز میداشت.
چه کسانی دیگر از ریاکت نیتیو استفاده نمیکنند؟
وقتی یک تکنولوژی جدید را ارزیابی میکنید؛ داشتن یک نگاه متعادل در پیدا کردن مزایا و معایب آن بسیار اهمیت دارد.
مهندسین Airbnb بعد از سه سال استفاده از ریاکت نیتیو تصمیم گرفتند از این ابزار به یک ابزار دیگر توسعهی موبایل مهاجرت کنند. آنها تجربهی خودشان از استفاده از ریاکت نیتیو را در یک سری پستهای وبلاگ مستند کردهاند. بعضی از چالشهایی که آنها در استفاده از ریاکت نیتیو با آن مواجه بودهاند را در ادامه آوردهایم:
- فریمورک ریاکت خیلی سریع تغییر میکند که باعث میشود پیدا کردن و رفع مشکلات سخت شود.
- هنوز هم شما باید کمی کدنویسی نیتیو انجام دهید. تعادل پیدا کردن کمی سخت است.
- دیباگ و تست باید در خود پلتفرم انجام شود.
- مشکلاتی موجود برای استخدام و سازماندهی افراد تیم برای ساخت اپلیکیشنهای هیبریدی.
- حفظ و نگهداری 3 محیط توسعه بهصورت آپدیت شده و پایدار (ریاکت نیتیو، اندروید و iOS)
مقایسهی دیدگاههای کسانی که از ریاکت باوجود همهی مزایا و معایبش استفاده میکنند و کسانی که از استفاده از آن صرفنظر کردهاند؛ جالب است.
پیشنهاد میکنیم در شبکهی کاری خودتان از افرادی که در این مورد تجربهای دارند هم کمک بگیرید. بیشتر شرکتها بهاندازهی شرکتهای بزرگی مثل Airbnb که مورد مثال ما بود؛ در تیمشان بودجه و نیروی کار ندارند. پس بهتر است تجربهی افرادی در سطوح هماندازهی خودتان را هم بشنوید.
یکبار هم شده ریاکت نیتیو را امتحان کنید
ریاکت یک فریمورک خیلی قوی است که برای ساخت اپلیکیشنهای موبایلی برای کسبوکارهایی با هر اندازهای استفاده میشود. ویژگیهای آن سریع بودن، مؤثر بودن و به نسبت آسان بودن یادگیری آن برای توسعهدهندههای جاوا اسکریپت است. وبسایت رسمی ریاکت نیتیو، بهترین جا برای شروع یادگیری آن است.