RSC فقط سریالایزیشن نیست!
خلاصهٔ کاملتر
React Server Components یا RSC از اون دسته ویژگیهاییه که از وقتی معرفی شده، بحثهای زیادی دور و برش شکل گرفته. یه تصور رایج اینه که RSC در نهایت فقط یه روش برای سریالایزیشن دادههاست؛ یعنی دادهها رو از سرور میگیره، به یه فرمت قابل انتقال تبدیل میکنه و میفرسته سمت مرورگر. اما Daishi Kato، توسعهدهندهای که روی کتابخونههای معروفی مثل Jotai و Zustand کار کرده، معتقده این تعریف خیلی ناقصه.
از نظر Kato، RSC یه مدل رندرینگ ترکیبیه که اجازه میده کامپوننتها در دو محیط کاملاً متفاوت — سرور و کلاینت — اجرا بشن، بدون اینکه توسعهدهنده مجبور بشه همهچیز رو دستی مدیریت کنه. این یه جهش مفهومیه، نه فقط یه بهبود فنی.
سریالایزیشن یکی از اجزای RSC هست، ولی کل ماجرا نیست. وقتی یه Server Component خروجی میده، اون خروجی به یه فرمت میانی تبدیل میشه که ریاکت میتونه روی کلاینت باهاش کار کنه. این فرمت میانی نه HTML خالصه، نه JSON معمولی — یه چیز مخصوص ریاکته که هم درخت کامپوننت رو حفظ میکنه هم state کلاینت رو دست نمیزنه.
یکی از مهمترین تفاوتهای RSC با SSR معمولی اینه که در SSR، سرور HTML میسازه و کلاینت اون رو هایدریت میکنه — یعنی یه بار رندر سرور، یه بار رندر کلاینت. اما در RSC، کامپوننتهای سرور میتونن مستقیم با کامپوننتهای کلاینت ترکیب بشن و این ترکیب به شکل هوشمندانهای مدیریت میشه.
این معماری مزایای عملی مشخصی داره: میشه منطق سنگین، کوئریهای دیتابیس یا پردازشهای پیچیده رو کاملاً سمت سرور نگه داشت و هیچوقت کد مربوطه به باندل جاوااسکریپت کلاینت اضافه نشه. این یعنی باندل سبکتر، لود سریعتر و پرفورمنس بهتر.
Kato تأکید میکنه که خیلی از سوءتفاهمها درباره RSC از اینجا میان که توسعهدهندهها سعی میکنن اون رو با ذهنیت SSR یا SSG قدیمی بفهمن. RSC یه پارادایم جدیده و باید با چارچوب فکری تازهای بهش نگاه کرد.
در نهایت، این مقاله یه دعوتنامهست برای اینکه عمیقتر به نحوه کارکرد RSC فکر کنیم — نه فقط به عنوان یه ابزار عملی، بلکه به عنوان یه تغییر بنیادی در نحوه تفکر درباره مرز سرور-کلاینت در اپهای مدرن.
نکات کلیدی:
- RSC فقط سریالایزیشن نیست؛ یه مدل رندرینگ ترکیبی کاملتره
- کامپوننتهای سرور و کلاینت میتونن به شکل هوشمندانهای با هم ترکیب بشن
- خروجی Server Components یه فرمت میانی مخصوص ریاکته، نه HTML یا JSON ساده
- RSC باندل جاوااسکریپت کلاینت رو سبکتر میکنه
- برای فهمیدن RSC باید ذهنیت SSR سنتی رو کنار گذاشت




