جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
logo-frontendi-150
0
  • خانه
  • دوره ها
  • وبلاگ فِرانت اِندی
  • تماس با ما
ورود / عضویت
  • صفحه اصلی
  • دوره های آموزشی
    • آموزش کتابخانه Ant Design به سادگی آب خوردن !
    • آموزش ساخت داشبورد حرفه ای با ری اکت !
    • آموزش فریمورک Tailwind CSS به زبان ساده!
    • آموزش HTML و CSS پروژه محور و اصولی !
  • وبلاگ
  • تماس با ما
  • درباره ما
ورود / عضویت

وبلاگ

فرانت اندی > وبلاگ فِرانت اِندی > ری اکت > CSR در ری اکت و نکست جی اس چیست ؟ ( رندر سمت کلاینت در ری اکت )

CSR در ری اکت و نکست جی اس چیست ؟ ( رندر سمت کلاینت در ری اکت )

15 آبان 1403
ارسال شده توسط احمد احمدنژاد
ری اکت، نکست جی اس
CSR در ری اکت - CSR در React - رندر سمت کلاینت در ری اکت - رندر سمت کلاینت در React - رندر سمت کلاینت در نکست جی اس - CSR در Next.js

وقتی صحبت از CSR در ری اکت میشه ( Client Side Rendering در React )، بیشتر به روش پیشفرض رندر کردن صفحات توی ری اکت اشاره داریم.
تو CSR، کل فرآیند ساخت و نمایش محتوا به مرورگر کاربر سپرده میشه. یعنی HTML اولیه که به کاربر ارسال میشه، معمولاً خالی یا کم‌ محتواست و جاوااسکریپت به مرورگر میگه که چطوری صفحه رو بسازه. این روش توی اپلیکیشن‌های تعاملی خیلی محبوبه. اما CSR دقیقاً چطور کار میکنه و چه مزایا و معایبی داره؟ تو این مقاله قراره حسااابی CSR در ری اکت رو بررسی کنیم 🙂

چطور CSR توی ری اکت و نکست جی اس کار میکنه؟

ری اکت از اول برای CSR طراحی شده. یعنی وقتی شما یه پروژه ری اکت می‌سازید، مرورگر شما جاوااسکریپت رو دانلود و اجرا میکنه و بعد محتوای صفحه رو با استفاده از کامپوننت‌ها رندر میکنه.
توی Next.js هم، برخلاف SSR، میتونیم از CSR استفاده کنیم تا صفحات ما به صورت پویا توی مرورگر ساخته بشن. این روش برای اپلیکیشن‌های تک‌صفحه‌ای (Single Page Applications یا SPA) خیلی خوب جواب میده.

مزایای CSR در React چیست ؟

  1. تجربه کاربری روان: CSR باعث میشه کاربر بعد از لود اولیه صفحه، تجربه خیلی روانی داشته باشه. مثلاً وقتی صفحه‌ ای تغییر میکنه یا کاربری روی دکمه‌ ای کلیک میکنه، نیازی به بارگذاری مجدد کل صفحه نیست و همه چیز سریع انجام میشه.
  2. بهینه برای تعاملات پیچیده: اگر اپلیکیشن شما تعاملات پیچیده یا انیمیشن‌ های زیادی داره، CSR مناسب‌ تره. تغییرات به سرعت و بدون تأخیر توی مرورگر اعمال میشه.
  3. کاهش بار سرور: چون رندرینگ سمت کلاینت ( در مرورگر کاربر ) انجام میشه، سرور فشار کمتری تحمل میکنه و بیشتر مسئولیت‌ها به مرورگر منتقل میشه.

معایب CSR در نکست جی اس و ری اکت

  1. زمان لود اولیه طولانی‌ تر: یکی از بزرگترین مشکلات CSR اینه که کاربر ممکنه کمی صبر کنه تا صفحه برای اولین بار لود بشه، چون مرورگر باید جاوااسکریپت رو دانلود و اجرا کنه.
  2. سئو ضعیف‌ تر: چون محتوای HTML در ابتدا خالیه، موتورهای جستجو ممکنه نتونن به‌ خوبی محتوا رو شناسایی و ایندکس کنن. البته، راهکارهایی مثل استفاده از رندرینگ پیشرفته وجود داره، ولی در حالت کلی، CSR برای سئو بهینه نیست.
  3. وابستگی به جاوااسکریپت: اگه کاربر جاوااسکریپت رو غیرفعال کنه یا مشکلاتی در اجرای اون وجود داشته باشه، محتوای صفحه ممکنه به درستی نمایش داده نشه.

چه زمانی باید از CSR استفاده کنیم؟

CSR برای اپلیکیشن‌ هایی که نیاز به تعاملات پیچیده دارن، عالیه. ( مثل جاهایی که به هوک ها نیاز داریم برای هندل کردن Logic های پیجیده مثل فرم های تعاملی، داشبورد ها و.. )
مثلاً اپلیکیشن‌ های داشبورد، ابزارهای ویرایش آنلاین، یا شبکه‌های اجتماعی که تغییرات زیادی توی صفحه دارن.
اما اگه اپلیکیشن شما بیشتر محتوا محوره و به سئو اهمیت زیادی میدید، بهتره که به SSR یا ترکیبی از هر دو روش فکر کنید. ( اگه با روش رندر سمت سرور یا همون SSR آشنا نیستید پیشنهاد میکنم مقاله SSR در ری اکت رو مطالعه کنید )

چالش‌ ها و مشکلات پیاده‌سازی CSR

  • مدیریت حالت‌ ها (State Management): وقتی پروژه شما بزرگ میشه، مدیریت حالت‌ ها میتونه چالش‌ بر انگیز باشه. باید از ابزارهایی مثل Redux یا Context API برای مدیریت درست حالت‌ ها استفاده کنید.
  • مشکلات با سئو: همونطور که گفتیم، اگه سئو برای پروژتون مهمه، باید راهکارهایی مثل رندرینگ پیشرفته یا استفاده از فریمورک‌ هایی مثل Next.js رو در نظر بگیرید.
  • حجم بالای باندل جاوااسکریپت: گاهی اوقات اپلیکیشن‌ های بزرگ باعث میشن فایل‌ های جاوااسکریپت خیلی حجیم بشن. باید از ابزارهایی برای بهینه‌ سازی باندل‌ ها مثل Webpack یا Code Splitting استفاده کنید.

پیاده‌سازی ساده CSR در ری اکت

حالا بیاید یه نمونه ساده از پیاده‌ سازی رندر سمت کلاینت در ری اکت ببینیم:

				
					// App.js
import React, { useState } from 'react';

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>سلام، این یه اپلیکیشن ری اکتیه!</h1>
      <p>شمارش: {count}</p>
      <button onClick={() => setCount(count + 1)}>افزایش</button>
    </div>
  );
}

export default App;

				
			

در این مثال، وقتی دکمه رو میزنیم، شمارش بدون رفرش شدن کل صفحه انجام میشه. این دقیقاً جادوی CSR توی ری اکت هست!

CSR در Next.js هم دقیقا به همین صورت هست فقط باید ابتدای صفحه از عبارت ‘use client’ استفاده کنیم:

				
					// App.js
'use client'
import React, { useState } from 'react';

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>سلام این یه اپیکیشن نکست جی اس هست</h1>
      <p>شمارش: {count}</p>
      <button onClick={() => setCount(count + 1)}>افزایش</button>
    </div>
  );
}

export default App;

				
			

چند نکته درمورد CSR در ریکت

 

  1. بهینه‌سازی لود اولیه
    یکی از راه‌ های بهبود زمان لود اولیه توی CSR اینه که کدهای جاوااسکریپت رو به قطعات کوچکتر تقسیم کنیم، یعنی از Code Splitting استفاده کنیم. این کار باعث میشه مرورگر مجبور نباشه کل کدهای جاوااسکریپت رو یکجا دانلود کنه، بلکه بخش‌ های مورد نیاز رو به‌صورت تدریجی بارگذاری کنه. توی ری اکت می‌تونیم از React.lazy و Suspense استفاده کنیم. اگه با Suspense آشنا نیستید پیشنهاد میکنم مقاله Suspense در ری اکت رو مطالعه کنین.

  2. پیش‌ بارگذاری داده‌ ها (Pre-fetching)
    در اپلیکیشن‌ های بزرگی که کاربر بین صفحات زیادی جابجا میشه، می‌تونیم از تکنیک پیش‌ بارگذاری داده‌ها استفاده کنیم. این یعنی داده‌ های صفحات بعدی رو قبل از اینکه کاربر به اون صفحه بره، آماده کنیم. فریمورک هایی مثل Next.js این کار رو خیلی راحت‌ تر میکنن.

  3. شبکه‌ های توزیع محتوا (CDN)

    • برای بهبود سرعت لود صفحات، بهتره فایل‌ های استاتیک مثل تصاویر، CSS، و حتی باندل‌ های جاوااسکریپت رو از طریق CDN توزیع کنیم. این کار باعث میشه کاربرها سریع‌ تر به این منابع دسترسی داشته باشن، چون CDN ها از سرور های نزدیک‌ تر به کاربر استفاده میکنن.

جمع‌بندی

CSR یکی از روش‌ های پرکاربرد توی توسعه وب با ری اکت و نکست جی اس هست. ( بخصوص برای اپلیکیشن‌ های تعاملی )
با این حال، همیشه باید بین نیاز های پروژه و مزایا و معایب CSR تعادل برقرار کنید. برای پروژه‌ هایی که تعاملات سریع و پویا مهمه، CSR انتخاب مناسبیه، ولی اگه سئو و سرعت لود اولیه اهمیت داره، شاید بهتر باشه به ترکیب با SSR فکر کنید.

CSR دقیقاً چیست و چه کار میکنه؟

CSR یعنی رندر کردن صفحات وب به صورت کامل توی مرورگر کاربر. به این صورت که وقتی کاربر وارد سایت میشه، مرورگر ابتدا یه HTML تقریباً خالی دریافت میکنه و بعد با استفاده از جاوااسکریپت محتوای صفحه رو میسازه. این روش به کاربر اجازه میده که تجربه تعاملی و روانی داشته باشه.

 

تفاوت CSR با SSR چیه؟

تو CSR، کل محتوای صفحه توی مرورگر کاربر ساخته میشه، ولی تو SSR، محتوای HTML روی سرور رندر میشه و بعد به مرورگر ارسال میشه. CSR باعث میشه تجربه کاربری بعد از لود اولیه بهتر باشه، اما SSR به لود سریع‌ تر اولیه و بهینه‌ تر شدن سئو کمک میکنه.

 

آیا CSR برای سئو مناسبه؟

نه خیلی! یکی از بزرگ‌ ترین مشکلات CSR اینه که موتورهای جستجو محتوای صفحه رو به سختی ایندکس میکنن، چون HTML اولیه خالیه و جاوااسکریپت باید اجرا بشه تا محتوا بارگذاری بشه. البته، بعضی راهکارها مثل استفاده از پیش‌ رندر (Prerendering) میتونه این مشکل رو تا حدی حل کنه.

 

چه پروژه‌ هایی بهتره از CSR استفاده کنن؟

پروژه‌ هایی که نیاز به تعاملات زیاد و تجربه کاربری سریع دارن، از CSR سود میبرن. اپلیکیشن‌های تک‌ صفحه‌ای (SPA) مثل ابزارهای آنلاین، شبکه‌های اجتماعی، ویرایشگرها و داشبوردها مثال‌ های خوبی هستن.

 

چرا زمان لود اولیه تو CSR بیشتره؟

چون مرورگر باید ابتدا جاوااسکریپت رو دانلود، پارس و اجرا کنه تا محتوای صفحه رو بسازه. این کار ممکنه زمان ببره، مخصوصاً اگه اتصال کاربر کند باشه یا فایل‌های جاوااسکریپت خیلی بزرگ باشن.

 

چطور میشه زمان لود اولیه رو بهینه کرد؟

چند راه برای بهبود وجود داره: استفاده از Code Splitting برای تقسیم فایل‌ های جاوااسکریپت، فشرده‌ سازی فایل‌ها (Minification)، بارگذاری تنبل (Lazy Loading) برای منابع غیرضروری، و استفاده از CDN برای سرو کردن فایل‌ ها.

مشکلات رایج CSR چیا هستن؟

بزرگ‌ ترین مشکلات شامل زمان لود اولیه طولانی، مشکلات مربوط به سئو، و وابستگی زیاد به جاوااسکریپت هستن. اگه جاوااسکریپت غیرفعال باشه یا درست کار نکنه، کل محتوای صفحه ممکنه نمایش داده نشه.

 

چه ابزارهایی برای مدیریت مسیرها در CSR استفاده میشه؟

ری اکت معمولاً از React Router برای مدیریت مسیرها استفاده میکنه. این کتابخونه کمک میکنه ناوبری صفحات توی اپلیکیشن به صورت سریع و روان انجام بشه، بدون اینکه کل صفحه رفرش بشه.

آیا CSR میتونه توی حالت آفلاین هم کار کنه؟

بله، اگه از تکنیک‌های Progressive Web App (PWA) استفاده کنی، میتونی اپلیکیشن‌های CSR رو به صورت آفلاین هم اجرا کنی. این کار با استفاده از Service Workerها انجام میشه که میتونن منابع ضروری رو کش کنن و در دسترس نگه دارن.

سوالات متداول فِرانت اِندی
درباره احمد احمدنژاد

من یه برنامه نویس و توسعه دهنده وب هستم که عاشق دنیای صفر و یکم❤️

نوشته‌های بیشتر از احمد احمدنژاد
قبلی SSR در ری اکت و نکست جی اس چیست ؟ ( رندر سمت سرور در ری اکت )
بعدی SSG در ری اکت و نکست جی اس چیست ؟ ( رندر استاتیک در Next.js )

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
پیاده سازی و مشاوره فِرانت اِند!

پیاده سازی اصولی و بهینه پروژه های فِرانت اِند در کمترین زمان ممکن 🙂

پیاده سازی و مشاوره

صفحات فِرانت اِندی
  • وبلاگ
  • تماس با ما
  • درباره ما
تماس با ما
  • [email protected]
  • 09102944692
شبکه های اجتماعی
Youtube Instagram Telegram
اشتراک گذاری در شبکه های اجتماعی
ارسال به ایمیل
https://frontendi.com/?p=14024
مرورگر شما از HTML5 پشتیبانی نمی کند.