در سال ۲۰۱۱، فیسبوک با چالشی عجیب روبرو شد و آن هم نیاز به پایگاه کاربری عظیم خود با رابط کاربری غنیتر، پویاتر و پاسخگو تر بود. برای دستیابی به این هدف، جردن واک، مهندس نرمافزار فیسبوک، به دنبال راهحلی برای توسعه وب بود. نتیجه تلاشهای او، کتابخانهای به نام ریکت جی اس بود؛ ابزاری که برای ساده کردن فرآیند توسعه با معرفی رویکردی ساختاریافته برای ایجاد رابطهای کاربری تعاملی با اجزای قابل استفاده مجدد طراحی شده بود.
فیسبوک با درک نیاز جامعه توسعهدهندگان جاوا اسکریپت، 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 بدون نیاز به بارگذاری مجدد کل صفحه، به سرعت به بهروزرسانیها پاسخ میدهند که منجر به تجربه کاربری روانتر و پویاتر میشود.
همانطور که گفته شد ریکت نوعی کتابخانه جاوا اسکریپت انعطافپذیر و قدرتمند برای ساخت رابطهای کاربری است. برخلاف برخی از فریمورکهای دیگر، مانند Angular، React به توسعهدهندگان این آزادی را میدهد که قراردادهای کد و سازماندهی فایل خود را انتخاب کنند. این باعث میشود کاربران توسعهدهنده آن را با نیازهای مختلف پروژه تطبیق دهند و از منابع به صورت مقیاس بندی شده استفاده ببرند. با React میتوانی اجزای سادهای مانند یک دکمه ایجاد کرد یا رابطهای کاربری پیچیدهای برای کل برنامهها ساخت. کاربر چه بخواهد تنها بخشی از سایت را تعاملی کند یا بخواهد یک برنامه را از ابتدا تا انتها با ریکت توسعه دهد، این امکان برایش فراهم است.
برای افزودن تعامل به بخش خاصی از یک برنامه وب موجود، میتوان React را با استفاده از نوعی شبکه تحویل محتوا (CDN) به وبسایت یا وب اپلیکیشن متصل کرد. برای رسیدن به این هدف این سه مرحله باید دنبال شوند:
<!– The first link is for the core React library API –>
<script src=”https://unpkg.com/react@17/umd/react.development.js” crossorigin></script>
<!– The second link is for React DOM, required for rendering to the DOM –>
<script src=”https://unpkg.com/react-dom@17/umd/react-dom.development.js” crossorigin></script>
<!– The third link is for Babel, needed to compile our React code for compatibility –>
<script src=’https://unpkg.com/babel-standalone@6.26.0/babel.js’></script>
<!– Load the React component file –>
<script type=”text/babel” src=”like_widget.js”></script>
٢. ایجاد یک <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
const ActualWidget = () => <h1>Hello World</h1>;
// Select the container
const container = document.getElementById(“like_widget_container”);
// Render the component to the DOM
ReactDOM.render(<ActualWidget />, container);
پس از اجرای برنامه، “Hello World” را در مرورگر در مکان مشخصشده مشاهده خواهد شد.
ممکن است متوجه سینتکس JSX در تابع ActualWidget شده باشید. JSX نوعی نحو یا سینتکس جاوا اسکریپت XML است که به کاربر امکان میدهد HTML و جاوا اسکریپت را به طور یکپارچه ترکیب کند. JSX که توسط فیسبوک توسعه داده شده است، عملکرد HTML را با جاسازی مستقیم آن در کد جاوا اسکریپت گسترش میدهد.
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 بسیار مهم است. با مدیریت مؤثر حالت، توسعهدهندگان میتوانند صفحات وب واکنشگرا و کاربرپسند ایجاد کنند.
برای ایجاد برنامه React میتوان از ابزار خط فرمان «create-react-app» فیسبوک استفاده کرد. این ابزار یک نسخه کامل از برنامه React را با تمام تنظیمات لازم تولید کرده و شروع کار روی پروژههای React را برای شما آسانتر میکند. در ادامه نحوه ایجاد ساخت برنامه ریکت با این ابزار آمده است:
npx create-react-app my-new-app
دستور ‘npx’ با npm 5.2.0 و نسخههای بالاتر ارائه میشود. این به کاربر امکان میدهد ابزار «create-react-app» را بدون نصب اجرا کند. این دستور آخرین نسخه «create-react-app» را دانلود میکند، فایلهای پروژه را تولید کرده و پیکربندیهای لازم را تنظیم میکند.
cd my-new-app
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 Native میشود که به توسعهدهندگان این امکان را میدهد تا با استفاده از React برنامههای موبایلی بومی برای iOS و Android بسازند. شرکتهایی مانند فیسبوک، اینستاگرام، Airbnb و بسیاری دیگر از React Native برای تقویت برنامههای تلفن همراه خود استفاده کردهاند.
علاوه بر این، React همچنین میتواند برای توسعه برنامههای دسکتاپ با استفاده از Electron.js استفاده شود. Electron.js به توسعهدهندگان این امکان را میدهد تا با استفاده از فناوریهای وب، برنامههای دسکتاپ بین پلتفرمی بسازند و React میتواند به طور یکپارچه در این برنامهها ادغام شود. تطبیقپذیری و کارایی React آن را به گزینهای محبوب برای توسعه برنامههای وب و موبایل تبدیل کرده است و توسعهدهندگان را قادر میسازد تا برنامههای سریع، تعاملی و مقیاسپذیر برای طیف وسیعی از موارد استفاده ایجاد کنند.
در مطلب فوق در رابطه با اینکه ریکت چیست، تاریخچه آن به کجا بازمیگردد، چه کاربردهایی دارد و چگونه از آن میتوان استفاده کرد، مطالبی مفید ارائه شد. همچنین در مورد مواردی مانند ریکت نیتیو و ریکت روتر نیز توضیحاتی بیان گردید و در نهایت، نگاهی به نمونههای واقعی برنامههای محبوبی که با استفاده از React.js توسعه یافتهاند پرداختیم.
React.js به عنوان نوعی کتابخانه جاوا اسکریپت نقطه عطفی برای توسعهدهندگان است و در هزینههای زمانی و اقتصادی آنها بسیار صرفهجویی خواهد کرد. با ریکت جی اس، میتوان تعاملات رابط کاربری پیچیدهای ایجاد کرد که به طور مؤثر با سرورها ارتباط برقرار میکند و این در حالی است که از منابع به صورت بهینه استفاده خواهد شد.
یادگیری کتابخانه ریکت مهارت بسیار ارزشمندی برای توسعهدهندگان وب بهخصوص توسعهدهندگان سمت فرانتاند است. با استفاده از این کتابخانه محبوب جاوا اسکریپت، برنامه نویسان و توسعهدهندگان میتوانند سایتها یا وباپلیکیشنهای خود را بسیار کارآمد بسازند. همچنین تسلط به مفاهیم ری اکت نقطه قوت بسیار حائز اهمیتی برای آن دسته از کسانی است که به دنبال کار در حوزه برنامهنویسی و توسعه وب هستند.
اگر به فکر یادگیری کتابخانه ریکت و یا افزایش مهارت در آن هستید و میخواهید با رویکردی عملی و جذاب کار با این کتابخانه را یاد بگیرید هماکنون با ثبتنام در دوره آموزش ریکت از آکادمی همراه، اولین و مهمترین قدم خود را در این مسیر بردارید. سرفصلهای این دوره آموزشی شامل مباحث زیر است:
با استفاده از دوره آموزش React and server-side Rendering میتوانید دانش خود را از توسعه وب با رویکردی ریکت جی اس افزایش داده و این بسیار مزیتی رقابتی در این حوزه محسوب میشود.
منابع:
آکادمی همراه اول با هدف تربیت، توسعه و توانمندسازی نیروی انسانی در اکوسیستم دیجیتال در تابستان ۹۹ آغاز به کار کرده است. آکادمی به پشتوانهی تجربهی آموزش و توسعهی نیروی انسانی همراهاول میکوشد نیازهای آموزشی عمومی، تخصصی و شکاف میان تحصیلات آکادمیک و فضای کار را پوشش دهد.