در سال ۲۰۱۱، فیسبوک با چالشی عجیب روبرو شد و آن هم نیاز به پایگاه کاربری عظیم خود با رابط کاربری غنیتر، پویاتر و پاسخگو تر بود. برای دستیابی به این هدف، جردن واک، مهندس نرمافزار فیسبوک، به دنبال راهحلی برای توسعه وب بود. نتیجه تلاشهای او، کتابخانهای به نام ریکت جی اس بود؛ ابزاری که برای ساده کردن فرآیند توسعه با معرفی رویکردی ساختاریافته برای ایجاد رابطهای کاربری تعاملی با اجزای قابل استفاده مجدد طراحی شده بود.
فیسبوک با درک نیاز جامعه توسعهدهندگان جاوا اسکریپت، React.js را به صورت منبع باز منتشر کرد. ویژگیهای انقلابی و رویکرد کارآمد آن، موجب شد در اکوسیستم جاوا اسکریپت از آن بسیار استفاده کنند و به سرعت در میان توسعهدهندگانی که به دنبال ساخت برنامههای کاربردی وب پویا و با کارایی بالا هستند، محبوبیت پیدا کرد.
در این مطلب به بررسی اینکه ریکت چیست، چه کاربردی دارد، چطوری میتوان از آن استفاده کرد و بسیاری دیگر از مسائل مهم پیرامون این کتابخانه قدرتمند جاوا اسکریپت پرداخته خواهد شد، طوری که کاربر در پایان مطالعه این مطلب درک نسبتاً خوب و ابتدایی از این کتابخانه به دست میآورد و میتواند کار با آن را شروع کند.
React.js نوعی کتابخانه منبع باز جاوا اسکریپت است که در ابتدا به وسیله کمپانی متا (فیسبوک قبلی) توسعه یافت. هدف اصلی آن تسریع در ایجاد رابطهای کاربری تعاملی و برنامههای کاربردی وب است که به طور قابلتوجهی میزان کد مورد نیاز را در مقایسه با رویکردهای سنتی جاوا اسکریپت کاهش میدهد.
در قلب React مفهومی از ساخت برنامههای کاربردی از طریق اجزای قابل استفاده مجدد یا کامپوننت (Component) نهفته است. این مؤلفهها عناصر متمایز رابط نهایی را نشان میدهند که وقتی در کنار هم قرار میگیرند، کل رابط کاربری برنامه را تشکیل خواهند داد.
به عنوان ابزاری حیاتی در برنامههای کاربردی وب، ریکت در مدیریت لایه View به کار گرفته میشود، دقیقاً مانند “V” در الگوی مدل-view-controller (MVC). در اصل کار اصلی ری اکت تقسیم اجزای سازنده برنامهها به چیزی به نام کامپوننت برای رندر بهتر است.
. React با ترکیب سرعت و کارایی جاوا اسکریپت با رویکردی بهینه برای دستکاری Document Object Model (DOM)، توسعهدهندگان را قادر میسازد تا برنامههای وب بسیار پویا، واکنشگرا و سریع ایجاد کنند.
کاربرد ریکت چیست؟
ریکت نوعی رویکرد متمایز به الگوهای بارگذاری سنتی صفحه وب ارائه میدهد. بهجای بارگذاری مجدد صفحات در دستگاه کاربر (مرورگر وب یا مشتری) و سرور برای هر درخواست صفحه جدید، React ایجاد برنامههای تکصفحهای (SPA) را امکانپذیر میکند. این بدان معناست که تنها یک سند HTML در ابتدا بارگذاری شده و بهروزرسانیهای بعدی از طریق جاوا اسکریپت انجام میشود.
با اتخاذ مسیریابی سمت کلاینت، React به طور مؤثر بخشهای خاصی از صفحه وب را بدون ایجاد بارگیری مجدد کامل صفحه بهروز میکند. این رویکرد به طور قابلتوجهی تجربه کاربر را بهبود میبخشد او این ویژگی بهویژه برای وبسایتهای مبتنی بر داده که در آن بارگذاری مجدد اضافی صفحات زیاد اتفاق میافتد بسیار حیاتی است.
مرکز عملکرد ریکت، DOM مجازی آن محسوب میشود که نوعی کپی از DOM واقعی است که ساختار وبسایت را منعکس میکند. هر زمان که تغییری در وضعیت دادهها ایجاد شود، ریکت DOM مجازی را متناسب با آن بهروزرسانی کرده و DOM واقعی را تنها با تغییرات لازم بهطور مؤثر اصلاح میکند. در نتیجه، کامپوننتها و رابطهای کاربری React بدون نیاز به بارگذاری مجدد کل صفحه، به سرعت به بهروزرسانیها پاسخ میدهند که منجر به تجربه کاربری روانتر و پویاتر میشود.
نحوه استفاده از React
همانطور که گفته شد ریکت نوعی کتابخانه جاوا اسکریپت انعطافپذیر و قدرتمند برای ساخت رابطهای کاربری است. برخلاف برخی از فریمورکهای دیگر، مانند Angular، React به توسعهدهندگان این آزادی را میدهد که قراردادهای کد و سازماندهی فایل خود را انتخاب کنند. این باعث میشود کاربران توسعهدهنده آن را با نیازهای مختلف پروژه تطبیق دهند و از منابع به صورت مقیاس بندی شده استفاده ببرند. با React میتوانی اجزای سادهای مانند یک دکمه ایجاد کرد یا رابطهای کاربری پیچیدهای برای کل برنامهها ساخت. کاربر چه بخواهد تنها بخشی از سایت را تعاملی کند یا بخواهد یک برنامه را از ابتدا تا انتها با ریکت توسعه دهد، این امکان برایش فراهم است.
برای افزودن تعامل به بخش خاصی از یک برنامه وب موجود، میتوان React را با استفاده از نوعی شبکه تحویل محتوا (CDN) به وبسایت یا وب اپلیکیشن متصل کرد. برای رسیدن به این هدف این سه مرحله باید دنبال شوند:
اضافه کردن اسکریپتهای CDN لازم به فایل HTML وبسایت: این اسکریپتها React و React DOM را از طریق سرویس CDN در برنامه بارگیری میکنند. اسکریپت زیر نمونهای از این موارد است:
<!– The first link is for the core React library API –>
٢. ایجاد یک <div> در فایل HTML برای مشخص کردن محل رندر کامپوننت React: برای این هدف باید یک شناسه منحصربهفرد به این <div> اختصاص داده شود که در کد جاوا اسکریپت برای مکانیابی استفاده میشود.
<!– … Your existing HTML markup … –>
<div id=”like_widget_container”></div>
<!– … Your existing HTML markup … –>
٣. ایجاد فایل با نام فرضی like_widget.js:
// Custom React component function that returns JSX syntax
پس از اجرای برنامه، “Hello World” را در مرورگر در مکان مشخصشده مشاهده خواهد شد.
ممکن است متوجه سینتکس JSX در تابع ActualWidget شده باشید. JSX نوعی نحو یا سینتکس جاوا اسکریپت XML است که به کاربر امکان میدهد HTML و جاوا اسکریپت را به طور یکپارچه ترکیب کند. JSX که توسط فیسبوک توسعه داده شده است، عملکرد HTML را با جاسازی مستقیم آن در کد جاوا اسکریپت گسترش میدهد.
state در ریکت چیست؟
React State دادهها را برای یک مؤلفه نگه میدارد و تعیین میکند که مؤلفه چه دادههایی را در خروجی خود نمایش دهد. وضعیت (State) شی نوعی مفهوم در React است که میتواند در طول زمان تغییر کند. هر زمان که وضعیت تغییر کند، مؤلفه مجدداً ارائه میشود تا دادههای بهروز شده را منعکس کند. این تغییرات در حالت میتواند در پاسخ به اقدامات کاربر یا رویدادهای تولید شده توسط سیستم رخ دهد و بر رفتار و رندر مؤلفه تأثیر بگذارد. توجه به مثال زیر درک بهتری از State در ریکت به کاربر میدهد:
class Greetings extends React.Component {
state = {
name: “World”
};
updateName() {
this.setState({ name: “Testname” });
}
render() {
return (
<div>
{this.state.name}
</div>
);
}
}
در مثال بالا، مؤلفه Greetings حالتی دارد که مقدار اولیه نام آن روی “World” تنظیم شده است. هر زمان که تابع updateName فراخوانی شود، ویژگی state.name با استفاده از setState() به Testname تغییر میکند. در نتیجه، کامپوننت دوباره رندر شده و نام بهروز شده در خروجی نمایش داده میشود.
نکات کلیدی در مورد React State:
وضعیت یک کامپوننت را میتوان بر اساس اقدامات کاربر یا تغییرات شبکه تغییر داد.
هر زمان که وضعیت یا همان state شی تغییر کند، React کامپوننت را برای بهروزرسانی UI در مرورگر دوباره رندر میدهد.
آبجکت state در سازنده کامپوننت مقداردهی اولیه میشود.
شی state میتواند چندین ویژگی را برای مدیریت دادههای مختلف ذخیره کند.
برای تغییر مقدار آبجکت state، از setState() استفاده میشود که ادغام سطحی بین state جدید و قبلی انجام میدهد.
درک state در ریکت برای ایجاد رابطهای کاربری تعاملی و پویا در برنامههای React بسیار مهم است. با مدیریت مؤثر حالت، توسعهدهندگان میتوانند صفحات وب واکنشگرا و کاربرپسند ایجاد کنند.
ساخت برنامه React
برای ایجاد برنامه React میتوان از ابزار خط فرمان «create-react-app» فیسبوک استفاده کرد. این ابزار یک نسخه کامل از برنامه React را با تمام تنظیمات لازم تولید کرده و شروع کار روی پروژههای React را برای شما آسانتر میکند. در ادامه نحوه ایجاد ساخت برنامه ریکت با این ابزار آمده است:
باز کردن ترمینال یا خط فرمان
استفاده از دستور زیر برای ایجاد یک پروژه React جدید با نام “my-new-app”:
npx create-react-app my-new-app
دستور ‘npx’ با npm 5.2.0 و نسخههای بالاتر ارائه میشود. این به کاربر امکان میدهد ابزار «create-react-app» را بدون نصب اجرا کند. این دستور آخرین نسخه «create-react-app» را دانلود میکند، فایلهای پروژه را تولید کرده و پیکربندیهای لازم را تنظیم میکند.
رفتن به دایرکتوری پروژه پس از ایجاد آن با دستور زیر:
cd my-new-app
راهاندازی سرور توسعه با استفاده از npm با دستور زیر:
npm start
این دستور سرور توسعه را راهاندازی کرده و برنامه ریکت را در یک مرورگر وب راهاندازی میکند. اکنون یک برنامه کاملاً کاربردی React موجود است که کاربر میتواند با تغییر کد موجود در پوشه src، ساخت برنامه خود را شروع کند. با «create-react-app» دیگر نیازی نیست کاربران نگران پیکربندی ابزارهای ساخت یا راهاندازی محیط توسعه از ابتدا باشند. این ابزار ساختاری سازگار و قابلاعتماد برای پروژههای ریکت ارائه میدهد.
ریکت نیتیو چیست؟
React Native (ری اکت نیتیو) نوحی فریمورک متنباز است که در توسعه نرمافزار برای ساخت اپلیکیشنهای موبایلی چند پلتفرمی استفاده میشود. به عنوان نوعی فریمورک، ریکت نیتیو به توسعهدهندگان پایهای برای توسعه برنامههای موبایلی است و مؤلفههای از پیش ساخته شده، کتابخانهها و مواد مرجع را ارائه میدهد. درست مانند چارچوب یک خانه که ساختار اصلی خانه را فراهم میکند، React Native عناصر اساسی یک برنامه کاربردی را ارائه میدهد که توسعهدهندگان میتوانند آن را مطابق با نیازهای خاص خود سفارشی کنند.
در این زمینه اصطلاح Native به برنامهها یا نرمافزارهایی اطلاق میشود که به طور خاص برای نوعی سیستمعامل خاص (OS) دستگاه طراحی و نوشته شدهاند. به عنوان مثال، یک برنامه بومی برای Playstation 5 بهینه شده و برای آن کنسول بازی خاص و سیستمعامل آن طراحی شده است. برنامهها و کدهای بومی اجرا شده اغلب تجربه کاربری برتری را ارائه میدهند، زیرا بهینهشدهاند و در پلتفرمهای مورد نظر خود عملکرد بهتری دارند.
React Native به توسعهدهندگان اجازه میدهد تا با رندر کردن برنامهها به طور مستقیم بر روی پلتفرم بومی دستگاه، به عملکرد و رفتاری مشابه بومی دست یابند. اگرچه این برنامه به طور خاص برای هر دستگاه ایجاد نشده است، اما از همان پلت فرم برنامهنویسی به عنوان نوعی برنامه بومی استفاده میکند. این به توسعهدهندگان این امکان را میدهد تا برنامههای تلفن همراهی بسازند که مانند برنامههای بومی در هر دو سیستمعامل iOS و Android عمل کنند و این در حالی است که به طور قابلتوجهی زمان و تلاش توسعه را کاهش میدهد.
تفاوت ریکت نیتیو و ریکت جی اس چیست؟
React و React Native هر دو محصول تیم مهندسی فیسبوک هستند و ابزارها و بلوکهای سازنده را برای توسعه برنامه در اختیار توسعهدهندگان قرار میدهند. با این حال، آنها اهداف متمایز دارند و پلتفرمهای مختلفی را هدف قرار میدهند.
React که با نامهای ReactJS یا React.js نیز شناخته میشود، نوعی کتابخانه جاوا اسکریپت است که عمدتاً برای توسعه وب در بخش فرانتاند استفاده میشود. React به توسعهدهندگان اجازه میدهد تا نوعی نمایش مجازی از رابط کاربری (UI) به نام مدل شی سند مجازی (VDOM) ایجاد کنند که سپس به رابط برنامهنویسی مرورگر ارائه میشود. این رویکرد بهروزرسانی کارآمد و یکپارچه را برای رابط کاربری بدون نیاز به بارگیری مجدد کامل صفحه امکانپذیر میکند.
از سوی دیگر، React Native نوعی فریمورک مبتنی بر جاوا اسکریپت محسوب میشود که به طور خاص برای توسعه اپلیکیشن موبایل طراحی شده است. در حالی که React مختص توسعه وب بوده، React Native برای ساخت برنامههای تلفن همراه بومی برای پلتفرمهایی مانند iOS و Android استفاده میشود. React Native بهجای رندر کردن به یک نمای مبتنی بر وب، مؤلفههای UI را مستقیماً به رابط برنامهنویسی پلتفرم بومی ارائه میکند. این برنامههای React Native را قادر میسازد تا مانند برنامههای بومی عملکرد و رفتار کنند و تجربه کاربری روانتر و عملکرد بهتری را ارائه دهند.
به طور خلاصه، React یک کتابخانه جاوا اسکریپت برای توسعه وب فرانتاند است، در حالی که React Native نوعی فریمورک برای توسعه برنامههای تلفن همراه است. آنها منشأ یکسانی دارند، اما React برای اجزای وب و برنامههای کاربردی وب است، در حالی که React Native برای ایجاد برنامههای تلفن همراه بومی در سیستمعاملهای iOS و Android است. هنگامی که React و React Native با هم استفاده میشوند، میتوانند ترکیبی قدرتمند برای توسعهدهندگانی باشند که به دنبال ساخت اپلیکیشنهای وب و موبایل به طور کارآمد هستند.
ریکت روتر چیست؟
React Router (ریکت روتر) نوعی بسته جاوا اسکریپت است که قابلیتهای مسیریابی را برای ایجاد برنامههای پیچیده سمت کلاینت با استفاده از React JS فراهم میکند. این بسته اولین بار در سال ۲۰۱۳ معرفی شد و به یکی از پرکاربردترین کتابخانههای مسیریابی برای برنامههای کاربردی وب مدرن تبدیل شده است.
با React Router، مدیریت URL و وضعیت برنامه بدون دردسر میشود و کاربر میتواند همه الگوهای URL ممکن را در برنامه خود تعریف کرده و با استفاده از React Router هرکدام را با یک مؤلفه رابط کاربری خاص مرتبط کند. این امر مدیریت حالت را ساده میکند و مقدار کد مورد نیاز را کاهش میدهد و در کنار همه اینها افزودن ویژگیهای جدید به برنامه را آسانتر خواهد کرد.
React Router هنگام ساخت برنامههای React که نیاز به پیمایش در چندین صفحه دارند، بسیار مهم است. این برنامه مسیریابی سمت سرویسگیرنده و سمت سرور را در برنامههای React فعال میکند و به کاربر امکان میدهد برنامههای وب یا موبایل تکصفحهای را با ناوبری روان و بارگذاری مجدد صفحه ایجاد کنند. ریکت روتر در اصل از معماری مبتنی بر کامپوننت پیروی میکند و اجزای مسیریابی مختلفی را ارائه میدهد که میتوانند در صورت نیاز در برنامه مورد استفاده قرار گیرند.
کاربردهای ریکت در دنیای واقعی
کتابخانه ریکت جی اس به انتخابی محبوب برای ساخت برنامههای کاربردی وب تبدیل شده است و بسیاری از شرکتها و پلتفرمهای معروف از آن استفاده میکنند. در زیر چند نمونه از برنامهها و شرکتهای قابلتوجهی که از React استفاده میکنند آورده شده است:
فیسبوک: React توسط فیسبوک توسعه داده شد و به طور گسترده در بخشهای مختلف رابط وب آنها استفاده میشود.
اینستاگرام: اینستاگرام که زیرمجموعه فیسبوک است، از React نیز برای برنامه وب خود استفاده میکند.
نتفلیکس: نتفلیکس از React برای برخی از بخشهای رابط کاربری خود استفاده میکند تا یک تجربه کاربری روان و پاسخگو ارائه دهد.
ردیت: Reddit پلتفرم محبوب جمعآوری اخبار اجتماعی است که از React برای قسمت فرانتاند خود استفاده میکند.
نیویورک تایمز: نیویورک تایمز از React برای تقویت بخشهایی از وبسایت خود استفاده میکند و تجربه کاربری مدرنی را ارائه میدهد.
Khan Academy: پلتفرم آموزشی Khan Academy همچنین از React برای رابط یادگیری تعاملی خود استفاده میکند.
Codecademy: Codecademy، نوعی پلت فرم یادگیری تعاملی آنلاین برای کدنویسی، از React برای رابط دوره خود استفاده میکند.
SoundCloud: SoundCloud، پلتفرم پخش موسیقی، از React برای برنامه وب خود استفاده میکند.
Discord: Discord، پلتفرم ارتباطی محبوب برای گیمرها، از React برای رابط کاربری خود استفاده میکند.
واتس اپ وب: نسخه وب واتس اپ از React برای رابط وب خود استفاده میکند.
علاوه بر این، اکوسیستم ریکت بسیار گسترش یافته و شامل React Native میشود که به توسعهدهندگان این امکان را میدهد تا با استفاده از React برنامههای موبایلی بومی برای iOS و Android بسازند. شرکتهایی مانند فیسبوک، اینستاگرام، Airbnb و بسیاری دیگر از React Native برای تقویت برنامههای تلفن همراه خود استفاده کردهاند.
علاوه بر این، React همچنین میتواند برای توسعه برنامههای دسکتاپ با استفاده از Electron.js استفاده شود. Electron.js به توسعهدهندگان این امکان را میدهد تا با استفاده از فناوریهای وب، برنامههای دسکتاپ بین پلتفرمی بسازند و React میتواند به طور یکپارچه در این برنامهها ادغام شود. تطبیقپذیری و کارایی React آن را به گزینهای محبوب برای توسعه برنامههای وب و موبایل تبدیل کرده است و توسعهدهندگان را قادر میسازد تا برنامههای سریع، تعاملی و مقیاسپذیر برای طیف وسیعی از موارد استفاده ایجاد کنند.
انقلاب ریکت در دنیای توسعه وب
در مطلب فوق در رابطه با اینکه ریکت چیست، تاریخچه آن به کجا بازمیگردد، چه کاربردهایی دارد و چگونه از آن میتوان استفاده کرد، مطالبی مفید ارائه شد. همچنین در مورد مواردی مانند ریکت نیتیو و ریکت روتر نیز توضیحاتی بیان گردید و در نهایت، نگاهی به نمونههای واقعی برنامههای محبوبی که با استفاده از React.js توسعه یافتهاند پرداختیم.
React.js به عنوان نوعی کتابخانه جاوا اسکریپت نقطه عطفی برای توسعهدهندگان است و در هزینههای زمانی و اقتصادی آنها بسیار صرفهجویی خواهد کرد. با ریکت جی اس، میتوان تعاملات رابط کاربری پیچیدهای ایجاد کرد که به طور مؤثر با سرورها ارتباط برقرار میکند و این در حالی است که از منابع به صورت بهینه استفاده خواهد شد.
آموزش ریکت
یادگیری کتابخانه ریکت مهارت بسیار ارزشمندی برای توسعهدهندگان وب بهخصوص توسعهدهندگان سمت فرانتاند است. با استفاده از این کتابخانه محبوب جاوا اسکریپت، برنامه نویسان و توسعهدهندگان میتوانند سایتها یا وباپلیکیشنهای خود را بسیار کارآمد بسازند. همچنین تسلط به مفاهیم ری اکت نقطه قوت بسیار حائز اهمیتی برای آن دسته از کسانی است که به دنبال کار در حوزه برنامهنویسی و توسعه وب هستند.
اگر به فکر یادگیری کتابخانه ریکت و یا افزایش مهارت در آن هستید و میخواهید با رویکردی عملی و جذاب کار با این کتابخانه را یاد بگیرید هماکنون با ثبتنام در دوره آموزش ریکت از آکادمی همراه، اولین و مهمترین قدم خود را در این مسیر بردارید. سرفصلهای این دوره آموزشی شامل مباحث زیر است:
آشنایی با ریاکت (سمت سرور)
آشنایی با typescript و webpack
تنظیمات سرور
Navigation و SSR
فراخوانی داده در سمت سرور
اضافه کردن Redux
با استفاده از دوره آموزش React and server-side Rendering میتوانید دانش خود را از توسعه وب با رویکردی ریکت جی اس افزایش داده و این بسیار مزیتی رقابتی در این حوزه محسوب میشود.