انتخاب بین Server و Client Component در Next.js
React Server Components یکی از بخشهای اصلی App Router در Next.js است. پرسش اصلی این نیست که کدام نوع کامپوننت همیشه بهتر است؛ بلکه باید مشخص کنیم هر بخش از صفحه در کجا اجرا شود.
ابتدا از Server Component استفاده کنید
کامپوننتهای App Router بهصورت پیشفرض Server Component هستند. برای محتوایی که میتواند روی سرور آماده شود، مانند ساختار صفحه، درخواست به پایگاه داده و ارتباط با API خصوصی، از آنها استفاده کنید.
به این ترتیب کدهای مخصوص سرور وارد باندل مرورگر نمیشوند. هیچوقت اطلاعات محرمانه، اتصال پایگاه داده یا متغیرهای محیطی خصوصی را به Client Component نفرستید.
برای تعامل از Client Component استفاده کنید
اگر کامپوننت به APIهای مرورگر، state، effect یا event handler نیاز دارد، باید از "use client" استفاده کند. این مرز را نزدیک همان قابلیت تعاملی قرار دهید و بیدلیل کل صفحه را Client Component نکنید.
فیلتر تعاملی است، اما صفحه و دادههای پروژه همچنان میتوانند روی سرور رندر شوند.
ترکیب دو نوع کامپوننت
یک Server Component میتواند Client Component را رندر کند و propهای قابلسریالسازی به آن بدهد. اتصال پایگاه داده یا تابع دلخواه را نمیتوان به مرورگر منتقل کرد. دریافت داده را روی سرور انجام دهید و فقط مقادیری را بفرستید که رابط تعاملی نیاز دارد.
همچنین Client Component میتواند محتوای Server Component را از طریق children دریافت کند. این الگو برای قرار دادن محتوای آمادهشده روی سرور داخل پنجره، تب یا provider سمت کاربر مفید است، بدون اینکه کل محتوا به باندل مرورگر منتقل شود.
چکلیست تصمیمگیری
- کد به
useState،useEffectیا handler کلیک نیاز دارد؟ فقط همان بخش تعاملی را Client Component کنید. - داده خصوصی میخواند یا به اعتبارنامه سرور نیاز دارد؟ آن را روی سرور نگه دارید.
- بخش بزرگی از صفحه ثابت است؟ رندر روی سرور را ترجیح دهید.
- به provider سمت مرورگر نیاز دارید؟ آن را در سمت کاربر نگه دارید، اما کل برنامه را بیدلیل زیر مرز کلاینت نبرید.
جمعبندی
از Server Component شروع کنید و فقط زمانی Client Component اضافه کنید که تعامل مرورگر لازم است. این کار مرز اجرا را روشن میکند، حجم JavaScript ارسالی به کاربر را کاهش میدهد و پردازش خصوصی را روی سرور نگه میدارد.
Other posts that might interest you...
Choosing Between Server and Client Components in Next.js
A practical guide to deciding where components should run, keeping client bundles small, and passing data safely in the App Router.
پیادهسازی احراز هویت JWT در Next.js
در این مقاله نحوه پیادهسازی سیستم احراز هویت امن با JWT در Next.js را یاد میگیرید.
Building JWT Authentication in Next.js
Learn how to implement secure JWT authentication in Next.js using API routes, protected pages, and best security practices.