Нова историја

Новите компоненти на React може да бидат смртта на преплавените веб-апликации

од страна на Gianna Song16m2025/04/24
Read on Terminal Reader

Премногу долго; Да чита

Научете како да архитектирате современи React апликации со користење на React Server Components (RSC), SSR и CSR во Next.js 15.Ова длабоко нуркање објаснува кога да се користи секоја стратегија за рендерирање, како RSC работи под капакот и зошто рендерирањето на серверот го менува развојот на фронт-енд во 2025 година.
featured image - Новите компоненти на React може да бидат смртта на преплавените веб-апликации
Gianna Song HackerNoon profile picture
0-item


(*Ако сакате да прескокнете напред и да се нурнете директно во техничката пропаст, скокнете на 1.


Во почетокот на 2010 година, React го револуционизираше развојот на фронтот со својот декларирачки модел на компоненти и ефикасно дифузирање на виртуелниот ДОМ. Она што започна како едноставна библиотека за прегледи наскоро стана корен за големи едностранични апликации (SPA). Овие СПА претежно користеа Client-Side Rendering (CSR), што значи дека прелистувачот ќе преземе пакет JavaScript, ќе го изврши и ќе го изгради UI целосно на клиентот.


Овој клиент-центриран модел беше флексибилен и високо интерактивен, и го дефинираше „модерните“ веб-апликации со години.


    Ѕидот
  • Долго време за интерактивна употреба (TTI): Тешките JavaScript пакети и работата на клиентот значеле дека корисниците чекале подолго пред да можат да комуницираат со страницата.
  • Ѕидот
  • Хидратација: Конвертирањето на HTML што го прикажува серверот во интерактивна апликација (хидратација) стана точка на шок во перформансите, особено како што се зголеми количината на динамичка содржина.
  • Ѕидот
  • Надуени пакети: Апликациите често испраќаат многу повеќе JavaScript отколку што е потребно, оптоварувајќи ги прелистувачите со код за карактеристики или содржини кои би можеле да се испорачаат поефикасно.
  • Ѕидот
  • Перформанси кои не се прошируваат: Колку е поголема и покомплексна апликацијата, толку е потешко да се одржи брза изведба на сите уреди и мрежни услови.
  • Ѕидот

Next.js се појави за да се справат со некои од овие болни точки со воведување на Server-Side Rendering (SSR), Static Site Generation (SSG), и други оптимизации. Овие техники ги подобри почетните времиња на оптоварување и оттовари некои од UI rendering работа на серверот.


Со Next.js 15 кој работи на React 19, нова парадигма за рендерирање го презеде центарот:React Server Components (RSC)RSCs им овозможуваат на програмерите да ги мешаат компонентите што ги прикажува серверот и клиентот во едно React дрво. импликациите се значајни.zero JavaScript overheadСо други зборови, за тие секции не е потребна хидратација од страна на клиентот. Логиката за собирање на податоци исто така е поедноставена со работа во внатрешноста на компонентите на серверот, елиминирање на многу непотребни API повици од прелистувачот.


Оваа статија не е преглед на површината на RSC. Кога почнав да пишувам за ефикасно користење на Next.js во 2025 година, брзо стана јасно дека React Server Components заслужува посветен длабоко нуркање.


На крајот, се надевам дека ќе излезете со иста јасност и благодарност за РСЦ како што го направив во текот на процесот на истражување и пишување на оваа статија.

Intro: From CSR to RSC — How Rendering Evolved in React

Вовед: Од CSR до RSC - Како рендерирањето еволуираше во реакција

Во текот на изминатата деценија, начинот на кој ги градиме апликациите React фундаментално се разви и со тоа и начинот на кој размислуваме за рендерирање.

Кратка историја на Client-Side Rendering (CSR) во React

Реакцијата ја стекнала својата популарност прекуClient-Side Rendering (CSR)Овој пристап им дал на програмерите целосна контрола над интерактивноста и состојбата, и го олеснил градењето на динамични едностранични апликации (SPA).


Сепак, CSR дојде со значајни компромиси:

    Ѕидот
  • Бавни почетни оптоварувања, особено на мобилни или слаби мрежи
  • Ѕидот
  • Лош SEO за страници со содржина
  • Ѕидот
  • JavaScript-тешки пакети – дури и за страници со минимална интерактивност
  • Ѕидот
  • Потребен е чекор на хидратација по вчитањето на HTML, одложувајќи го времето на интерактивноста
  • Ѕидот


За некое време, овие ограничувања беа само "како работите беа."

Како Next.js донесе SSR и SSG во развојот на React

КогаNext.jsВоведено е рендерирање од страна на серверот (SSR) и статично генерирање на сајтови (SSG) како граѓани од прва класа за React.


    Ѕидот
  • SSR овозможи страници да се генерираат по барање, подобрување на оптимизација и брзина на полнење за динамична содржина.
  • Ѕидот
  • SSG им овозможи на содржините да бидат подготвени за време на распоредувањето, совршено за блогови, документи и маркетинг сајтови.
  • Ѕидот
  • Инкременталната статичка регенерација (ISR) го надмина јазот, овозможувајќи статички страници да се ажурираат по распоредувањето.
  • Ѕидот


Оваа флексибилност им помогна на програмерите да постигнат подобра рамнотежа помеѓу перформансите, оптимизацијата и искуството на програмерите.


Но, дури и со SSR и SSG, сè уште постоеше проблем:we were still sending too much JavaScript to the browser– дури и за компоненти кои не треба да бидат интерактивни.

Пораст на React Server компоненти (RSC) во 2025 година

Со ослободувањето наNext.js 15иReact 19Ние влеговме во нова ера:React Server Components (RSC)Тие сега се клучен дел од начинот на кој ги градиме апликациите.


За разлика од SSR, кој сè уште бара хидратација и испраќа JavaScript до клиентот,RSC allows you to render components on the server — without sending any JavaScript to the browser at all. на


Тоа е голема промена:

    Ѕидот
  • Компонентите сега можат директно да пристапат до податоците од страна на серверот
  • Ѕидот
  • Статичната содржина не бара хидратација
  • Ѕидот
  • Можете да ги мешате компонентите на серверот и клиентот во едно React дрво, составувајќи ја вашата стратегија за рендерирање по компонента
  • Ѕидот


RSC не го заменува SSR или SSG.complements them, отклучување на фина контрола над перформансите, големината на пакетот и однесувањето на рендерирање.


Во 2025 година, RSC е фундаментален концепт кој секој висок инженер на React треба да го совлада.

1. Why React Server Components Were Introduced

Зошто се воведуваат компонентите на React Server

Додека Client-Side Rendering (CSR), Server-Side Rendering (SSR) и Static Site Generation (SSG) понудија различни стратегии за градење на перформанси веб апликации, секој од нив носеше компромиси кои станаа повеќе очигледни во скала.

Ограничувања на CSR, SSR и SSG

1. наHydration overhead

Дури и со SSR или SSG, откако HTML ќе стигне до прелистувачот, React треба да ја "хидрира" страницата - да ги поврзе слушателите за настани, да ги реиницијализира компонентите и ефикасно да ја обнови апликацијата во меморијата.

2. наJavaScript bundle bloat

Со CSR, секоја компонента, алатка и API повик кој е дел од страницата мора да се испрати до прелистувачот - без оглед на тоа дали е интерактивен или не. SSR и SSG го намалуваат ова малку, но поголемиот дел од пакет се уште треба да се изврши на клиентот.

3. наDisconnected data-fetching logic

Во светот пред RSC, податоците живееле надвор од компонентите кои го изведувале.getServerSidePropsилиgetStaticProps(или повикајте APIs воuseEffectОва одвојување додаде когнитивно надминување и го отежнува кодот за ко-локација и повторна употреба.

Кои проблеми RSC е дизајниран да ги реши

React Server Components (RSC) беа создадени за да се справат со овие растечки точки на болка со едноставна, но моќна идеја:let components execute on the server by default, and only send JavaScript to the browser when it’s absolutely necessary. на


Eliminate unnecessary JavaScript

RSC им овозможува на компонентите да се рендерираат од страна на серверотБезиспраќање на било која од нивната логика до клиентот.Ако компонентата не бара интерактивност, нема потреба воопшто да се хидрира или да се натовари нејзиниот JS пакет.


Server-side data access within the component tree

RSC ја отстранува вештачката граница помеѓу собирањето и рендерирањето на податоците.async/awaitза директен пристап до бази на податоци, датотечни системи или API-и – ко-локација на податоците и логика за гледање природно, без потреба од API рути или проп бушење.


Improve rendering efficiency and developer experience

Со преместување на неинтерактивната логика на серверот, програмерите можат да градат полесни апликации со помали пакети и подобри перформанси.


RSC не има за цел да ги замени SSR или SSG, туку ги надополнува.at the component level, не само на ниво на страница, за тоа што треба да се кандидира на серверот и што припаѓа во прелистувачот.


In short: React Server Components were designed to bring modern frontend development back to its lean, fast, and maintainable roots without compromising interactivity.

2. Rendering Strategies in Next.js 15: RSC vs SSR vs CSR

Рендерирање стратегии во Next.js 15: RSC vs SSR vs CSR

Next.js 15 им нуди на програмерите гранулиран модел на рендерирање кој оди подалеку од традиционалните стратегии на ниво на страница.React Server Components (RSC)станувајќи концепт од прва класа, неопходно е да се разбере како тие се споредуваат со два познати модели:Server-Side Rendering (SSR)иClient-Side Rendering (CSR). на


Додека SSG (Статична генерација на сајтови) сè уште е вредна во одредени случаи, може да се гледа какоcaching strategyе изградена на врвот на ССР.RSC vs SSR vs CSRпретставуваат различни патеки за рендерирање на работното време, а разбирањето на нив е од клучно значење за донесување одлуки со свест за перформансите и архитектурата во 2025 година.

💡 Пред да споредиме: Што значи „интерактивна компонента“?

Во контекст на React и Next.js,interactive componentСекој елемент којrequires client-side JavaScript to respond to user input or browser events. на


Ова вклучува (но не е ограничено на):

    Ѕидот
  • Бутони кои го ажурираат статусот на клик
  • Ѕидот
  • Формули со валидација или контролирани влезови
  • Ѕидот
  • Dropdowns и modals кои се префрлуваат отворен / затворен
  • Ѕидот
  • Анимации предизвикани од скролинг или ховер
  • Ѕидот
  • Табови, каросерии, филтри, слајдови
  • Ѕидот
  • Компоненти кои користат useState, useEffect или useReducer
  • Ѕидот

Ако некој од компонентите имаevent handlersВнатрешностаstateили се потпираат наDOM or browser APIsТоа мора да работи на клиентот.


Interactivity = Browser-side behavior + JS event listeners + local state.


Разбирањето на оваа разлика помага да се разјасниwhy RSC exists: за да се избегне испраќање на JavaScript за делови од корисничкиот интерфејс кои не треба да бидат интерактивни.

Превземање на модели на еден поглед

ЅидотФункција RSC (React Server Components) SSR (Server-Side Rendering) CSR (Client-Side Rendering) Render Location Server Server Client JavaScript испратен до прелистувачот ❌ Ништо ✅ Да ✅ Да Потребно е хидратирање 🔸 Не ✅ Да ✅ Да ✅ Да Интерактивност 🔸 Не ✅ Целосен ✅ Потполн пристап до серверот ресурси ✅ Директен ✅ Преку getServerSideProps ✅ Потребни се API повици Кога работи на барање или се пренесува по барање На оптоварување во прелистувачот Идеален случај за користење Статички или приказни поврзани со податоци Персонализиран или динамичен UI Интерактивни протоци, локален UX
Функција RSC (React Server Components) SSR (Server-Side Rendering) CSR (Client-Side Rendering)ЅидотЛокација на клиентот на серверотЅидотJavaScript испратен до прелистувачот Нема ✅ Да ✅ ДаЅидотПотребна е хидратација Не Да ДаЅидотИнтеракција Не Целосно ЦелосноЅидотПристап до серверот ресурси ✅ Директно ✅ преку getServerSideProps ❌ Потребни API повициЅидотКога работи на барање или се пренесува по барање На оптоварување во прелистувачотЅидотИдеален случај на употреба Статички или приказни поврзани со податоци Персонализиран или динамичен интерфејс Интерактивни протоци, локален UXЅидотФункција RSC (React Server Components) SSR (Server-Side Rendering) CSR (Client-Side Rendering)карактеристика

карактеристика

RSC (React Server Компоненти)

RSC (React Server Компоненти)

Ѕидот

SSR (серверска страна на рендерирање)

SSR (серверска страна на рендерирање)

Ѕидот

CSR (предавање од страна на клиентот)

CSR (предавање од страна на клиентот)

Локација на клиентот на серверотДодадете локација

Додадете локација

серверот

серверот

Ѕидот

Server

серверот

Клиентот

Клиентот

JavaScript испратен до прелистувачот Нема ✅ Да ✅ ДаJavaScript испратен до прелистувачот

JavaScript испратен до прелистувачот

Никој

Никој

Ѕидот

Да

Да

Да

Да

Потребна е хидратација Не Да ДаПотребна е хидратација

Потребна е хидратација

Не

Не

Да

Да

Да

Да

Интеракцијата не е целосно целоснаЅидот

Interactivity

Интерактивноста

Ѕидот

Не

Не

Ѕидот

Полн со

Полн со

Ѕидот

✅ Full

✅ Full

Пристап до серверот ресурси ✅ Директно ✅ преку getServerSideProps ❌ Потребни API повициЅидот

Пристап до серверот ресурси

Пристап до серверот ресурси

Ѕидот

Директна

Директна

Ѕидот

✅ преку getServerSideProps

ПатотgetServerSideProps

Ѕидот

Потребни се API повици

Потребни се API повици

Кога работи на барање или се пренесува по барање На оптоварување во прелистувачотЅидот

Кога ќе тече

Кога ќе тече

На барање или стримиран

На барање или стримиран

По барање

По барање

Ѕидот

On load in browser

Превземање во браузер

Идеален случај на употреба Статички или приказни поврзани со податоци Персонализиран или динамичен интерфејс Интерактивни протоци, локален UXИдеален случај за употреба

Идеален случај за употреба

Ѕидот

Статички или базирани на податоци погледи

Статички или базирани на податоци погледи

Ѕидот

Персонализиран или динамичен UI

Персонализиран или динамичен UI

Ѕидот

Интерактивни флуктори, локален UX

Интерактивни флуктори, локален UX

Think in Components, Not Just Pages

Во претходните верзии на Next.js, стратегии за рендерирање се применуваат наpage level. You had getServerSideProps, getStaticPropsШто и да изберете, се применува наЦела страницаОва имало смисла во свет каде што рендерирањето се случувало сè или ништо – или статично во времето на градење, или динамично на секое барање.


Но соReact Server Components (RSC)и наapp/директориумот воведен во Next.js 13+ и стандардизиран во 15,rendering is no longer a top-down, one-size-fits-all decisionТаа станува аper-component concernТоа отвора ново размислување.

Нов начин на размислување: декларативно и композитно рендерирање

Оваа промена е повеќе од промена на API, тоа е концептуална промена во начинот на кој го архитектирате вашиот фронт-енд.

Declarative

Наместо оркестрирањеКакоиwhere components are rendered manually, you now simply declare what each component does and what it needsReact и Next.js се грижат за остатокот.


Не можете рачно да ги поврзете API крајните точки или да ги пренесете прописите од SSR на компоненти.

// Server Component
export default async function ProductInfo() {
  const product = await db.getProduct(slug)
  return <div>{product.name}</div>
}


Оваа компонента:

    Ѕидот
  • Работи на серверот
  • Не испраќаат JS до клиентот
  • Ѕидот
  • Не бара никакви getServerSideProps или API слој
  • Ѕидот
  • Дали е „само компонента“ – не е потребна дополнителна апстракција


You describe the UI and its data needs declaratively, а рендерирањето на моторот го пресметува остатокот.

Composable

Различни делови од вашиот кориснички интерфејс можат да користат различни стратегии за рендерирање -on the same page, at the same timeиwith minimal overhead. на


На пример:

// Product page layout
<ProductInfo />           // Server Component (no JS, rendered on the server)
<AddToCartButton />       // Client Component (interactive)
<SimilarProducts />       // Static Component (SSG with revalidation)


Овие компоненти живеат заедно во истото дрво, но секој од нив:

    Ѕидот
  • Работи во различна средина (сервер, клиент, градење)
  • Ѕидот
  • Користете ги само податоците и кодот што ви е потребен
  • Ѕидот
  • Бродови токму она што е потребно за прелистувачот - не повеќе, не помалку
  • Ѕидот


За да го направам ова поконкретно, создадовМинимална демоТоа покажува како различни стратегии за рендерирање можат да соживуваат на една страница.

3. How React Server Components Work Under the Hood

Како компонентите на серверот реагираат под капакот

React Server Components (RSC) се повеќе од само нова стратегија за рендерирање, тие фундаментално го менуваат начинот на кој се градат, рендерираат и пренесуваат компонентните дрвја.how it works behind the scenesи како тоа влијае на границите на државата, интерактивноста и податоците.

Граница на серверот/клиентот: Дрво на поделени реакции

React апликации кои користат RSC повеќе не се целосно рендерирани на клиентот.component tree is split into two worlds: на


    Ѕидот
  • Server Components: Execute only on the server. No JavaScript is ever sent to the browser. Cannot hold local state or attach event listeners. Perfect for rendering static content and server-bound logic (e.g., DB access).
  • Ѕидот
  • Компоненти на клиентот: Мора да бидат експлицитно означени со "употреба на клиентот".Овие се компилирани во прелистувач-пријателски JavaScript и поддржуваат целосна интерактивност, локална состојба, употребаЕфект и ракување со настани.
  • Ѕидот


На build или runtime, React конструира дрво каде што серверот и компонентите на клиентот соживуваат и ги стегаат заедно за време на рендерот.


Што"use client"Всушност го прави

Кога ќе додадете"use client"на датотека, означува дека целиот модул и неговите извози какоclient-only. Behind the scenes, this instructs the Next.js build pipeline to:


    Ѕидот
  • Компилирајте ја таа датотека (и нејзините зависности) во посебен JavaScript пакет
  • Ѕидот
  • Исклучете ја таа компонента од работа на серверот
  • Ѕидот
  • Третирајте го како класична React CSR компонента со логика на хидратација
  • Ѕидот


This directive acts as a boundary marker between the two sides of the tree. All components above it can be server-rendered; all components below it must be rendered in the browser.

Стреаминг: рендерирање во парчиња, не сите одеднаш

РСЦ прегрнуваstreaming as a native rendering strategy. Instead of waiting for the full React tree to be built before sending it to the browser, the server streams serialized fragmentsод UI до клиентот како тие стануваат подготвени.


    Ѕидот
  • Server Components are rendered and sent as soon as possible

  • Ѕидот
  • Сместувачите (на пример, преку <Suspense>) привремено ги пополнуваат
  • Ѕидот
  • Клиентските компоненти хидрираат постепено, само кога се полнат

Како е тоа можно?


RSC introduces a concept called selective hydration. When a Client Component is rendered within a Server Component tree, React inserts a placeholder (<div data-rsc-placeholder />) and defers hydration.


Откако клиентот го вчита соодветниот JS пакет:

  1. React lazily loads that specific component
  2. Ѕидот
  3. Најди го држачот на местото и го вметнува во живото дрво
  4. Ѕидот
  5. Hydrates it in isolation, without re-rendering the entire page
  6. Ѕидот


This design is decoupled and progressiveВашата апликација започнува брзо, а интерактивноста постепено доаѓа на интернет.

<Suspense fallback={<LoadingDetails />}>
  <ProductDetails />  // Server Component
</Suspense>

<AddToCartButton />    // Client Component (hydrated later)

️ Повлекување на податоци и делење на код во RSC

Another key “magic” of RSC: you can fetch data directly inside components withЅидотasync/awaitБез да се потпираат наgetServerSideProps, наuseEffect, or manual prop-passing.


// Server Component
export default async function Dashboard() {
  const stats = await getStatsForUser()
  return <StatsView data={stats} />
}


Зошто ова е можно?

    Ѕидот
  • RSC components run as real server functions, not as client-compiled modules
  • Ѕидот
  • They can access databases, internal APIs, file systems, or anything your server runtime supports
  • Ѕидот
  • Резултатот се прикажува во HTML (не JS) и се пренесува на клиентот
  • Ѕидот


Исто така:

    Ѕидот
  • Не е потребна хидратација, бидејќи резултатот е статичен
  • Нема логика за полнење на корисничкиот интерфејс во самата компонента - сè се решава пред да го погоди прелистувачот
  • Ѕидот
  • Ниту еден код за оваа компонента не се испраќа до клиентот – освен ако не е вграден во границата на клиентот
  • Ѕидот


This significantly reduces boilerplate and bundle size, while keeping logic colocated with UI — a long-standing React goal finally realized at scale.

🚫 State, Hooks, and Lifecycle Considerations

RSC does not supportТрадиционалните реакции на хаосот какоuseState, useEffectилиuseRef, because they don’t run in the browser. на

ЅидотФункција Сервер Компонента Клиент КомпонентаКористетеЕфектЅидотЅидотЅидотЅидотЅидотasync/await ✅ (треба да се вклопува во ефекти)ЅидотНастаниЅидот
Користење на контекст✅ (ако е статично)Ѕидот


Функција Сервер Компонента Клиент КомпонентаКористетеЕфектЅидотЅидотКористење на контекст✅ (ако е статично)ЅидотЅидот


Ѕидотasync/await ✅ (треба да се вклопува во ефекти)ЅидотНастаниЅидотФункција Сервер Компонента Клиент Компонента

Feature

Feature

Серверска компонента

Server Component

Ѕидот

Client Component

Client Component

КористетеЅидот

useState

useState


ЕфектКористење ефекти

useEffect


ЅидотКористење на контекст✅ (ако е статично)ЅидотЅидот


ЅидотКористење на контекст

useContext

✅ (if static)

✅ (ако е статично)

Ѕидот



async/await ✅ (треба да се вклопува во ефекти)Ѕидот

асинх / чекај

async/await


❌ (should wrap in effects)

(треба да се вклопува во ефекти)

НастаниЅидот

Менаџери на настани

Менаџери на настани



Ѕидот




Ова наметнува чиста поделба на одговорностите:

    Ѕидот
  • Server Components: data and layout
  • Ѕидот
  • Компоненти на клиентот: интерактивност и локална состојба
  • Ѕидот

Компонентите на React Server се дизајнирани за да ја поедностават вашата апликација. Откако ќе ги интернализирате правилата за граници, моделот за стриминг и асинхронниот пристап до податоци, можете даcompose fast, personalized, and minimal-JS apps with far less boilerplate than before.

4. What’s the Best Practice? Combining RSC, SSR, and SSG

Која е најдобрата пракса? комбинирање на RSC, SSR и SSG

Едно од најчестите прашања со кои се соочуваат инженерите на React во Next.js 15 не е „Дали треба да користам RSC?“ – тоа е“how do I combine RSC with SSR and SSG in a maintainable, high-performance way?”


Убавината на Next.js 15 е дека повеќе не сте ограничени на една стратегија за рендерирање по страница.compose rendering strategies at the component level, применување на најсоодветниот пристап за секој дел од UI.


This section introduces a practical framework for making that decision based on actual architectural needs.

Започнете со основното прашање: што е потребно за оваа компонента?

Ask these four questions for every component:

  1. Дали треба да биде интерактивна? ✅ Да → Користете компонента на клиентот
  2. Ѕидот
  3. Does it need secure, request-specific, or real-time data?
    • ✅ Yes → Consider SSR
  4. Ѕидот
  5. Can it be precomputed or infrequently updated?
    • ✅ Yes → Prefer SSG
  6. Does it fetch server data but never need to run on the client?
    • ✅ Yes → Use RSC
  7. Ѕидот

🧩 Example: Product Page Strategy Breakdown

Еве како може да се направи типична страница за е-трговија со користење на сите три стратегии:

ЅидотКомпонент Рендеринг Стратегија Причина ПроизводДетали RSC Повлечен од DB, нема интерактивност, нема потреба да се хидрира PriceWithПерсонализација SSR Зависи од корисничката сесија, динамичен по барање AddToCartButton CSR Потребна е интерактивност и локална состојба Поврзани производи SSG (со ISR) Безбедно да се кешира за време на градење, може да се потврди на секои 24 часа или по таг StockStatusBanner RSC + стриминг Често се менува, се пренесува со Суспензија за да не се блокира TTFB
ЅидотЅидот

Компонента

ЅидотИзработка на стратегија

Причина

Ѕидот

Детали за производот

Ѕидот

RSC

ЅидотПреземено од DB, без интерактивност, без потреба да се хидрираЅидот

PriceWithPersonalization

ЅидотЅидот

SSR

Зависи од сесијата на корисникот, динамичен по барање

ЅидотДодатоциButtonЅидотCSRЅидотПотребна е интеракција и локална државаЅидотПоврзани производиSSG (со ISR)Безбедно да се кешира за време на градење, може да се потврди на секои 24 часа или по тагЅидотStockStatusBanner RSC + стриминг Често се менува, стримиран со суспензија за да не го блокира TTFBЅидотЅидотЅидот

Компонента

ЅидотИзработка на стратегија

Причина

Ѕидот

Компонента

Компонента

Изработка на стратегија

Изработка на стратегија

Reason

Причина

Ѕидот

Детали за производот

Ѕидот

RSC

ЅидотПреземено од DB, без интерактивност, без потреба да се хидрираЅидотЅидот

Детали за производот

ProductDetails

Ѕидот

RSC

RSC

Преземено од DB, без интерактивност, без потреба да се хидрира

Преземено од DB, без интерактивност, без потреба да се хидрира

PriceWithPersonalization

ЅидотЅидот

SSR

Зависи од сесијата на корисникот, динамичен по барање

PriceWithPersonalization

PriceWithPersonalization

Ѕидот

SSR

SSR

Зависи од сесијата на корисникот, динамичен по барање

Зависи од сесијата на корисникот, динамичен по барање

ДодатоциButtonЅидотCSRЅидотПотребна е интеракција и локална држава

AddToCartButton

AddToCartButton

CSR

CSR

Потребна е интеракција и локална држава

Потребна е интеракција и локална држава

ЅидотПоврзани производиSSG (со ISR)Безбедно да се кешира за време на градење, може да се потврди на секои 24 часа или по тагЅидотПоврзани производи

RelatedProducts

Ѕидот

SSG (with ISR)

SSG (with ISR)

Ѕидот

Безбедно да се кешира за време на градење, може да се потврди на секои 24 часа или по таг

Safe to cache at build-time, can revalidate every 24h or per tag

ЅидотБанкарска станицаЅидотRSC + СтримингЅидот

Често менување, пренесување со суспензија за да не се блокира TTFB

Ѕидот

StockStatusBanner

StockStatusBanner

Ѕидот

RSC + Стриминг

RSC + streaming

Ѕидот

Често менување, пренесување со суспензија за да не се блокира TTFB

Често менување, пренесување со суспензија за да не се блокира TTFB

Секоја компонента го правиjust what it needs to doНема целосна хидратација на страниците, нема глобално собирање на податоци, нема непотребен JavaScript.

Дизајн на најдобри практики за комбинирање стратегии

Старт на серверот-прво

Секоја компонента е дизајнирана како компонента на серверот по претпоставка."use client"Ова ги задржува пакетчињата помали и го поедноставува тестирањето.

2.Држете ги границите јасни

Користете име на папка или суфикси на име на датотека за да ги направите границите експлицитни:

/components
  /server/ProductDetails.tsx
  /client/AddToCartButton.tsx
  /shared/ReviewStars.tsx

Прифатете суспензија за прогресивна испорака

Користете<Suspense> to stream in non-critical RSCs without blocking the whole page:

<Suspense fallback={<LoadingReviews />}>
  <ReviewList />
</Suspense>

✅ 4. Co-locate logic with components

Don’t split data-fetching and UI across files unless necessary. In RSC, you can colocate asyncлогиката директно во внатрешноста на компонентното дрво - рамката се грижи за остатокот.

ISR (Incremental Static Regeneration) – зголемена статичка регенерација

For cacheable, high-traffic pages like blog articles or marketing sections, use SSG + revalidation:

export const revalidate = 3600  // regenerate every hour

Чести грешки кои треба да ги избегнете

  • Користење на "користење на клиентот" по дефолт - повторно ќе завршите со CSR
  • Ѕидот
  • Fetching data in client components when it could be server-fetched
  • Пренесување премногу податоци помеѓу RSC и компонентите на клиентот преку прописите – наместо тоа, оставете ги компонентите на клиентот да бидат фокусирани, изолирани и државни
  • Recreating SSR-style getServerSideProps logic inside RSC — no need, RSC is server-side
  • Ѕидот

✅ Одлука дрво резиме

Еве едноставен водич:

Is it interactive?
│
├── Yes → Client Component (CSR)
│
└── No
    │
    ├── Needs per-request data? → SSR
    │
    ├── Can be pre-rendered? → SSG
    │
    └── Otherwise → RSC


Кога ќе интернализирате како да ги рендерирате мапите на одговорност,the decisions become intuitive.


Најдобрата пракса не е во изборот на „најдобрата стратегија за рендерирање“.


Станува збор заdesigning rendering as an intentional part of your component architecture– со јасност, цел и перформанси во умот.

6. Looking Ahead: Why RSC Is More Than Just a Feature

Гледајќи напред: Зошто RSC е повеќе од само карактеристика

Компонентите на React Server не се само оптимизација на перформансите или DX подобрување.they represent a foundational shift in how we build React applicationsИсто како React Hooks во 2019 година, RSC во 2025 година еredefining the baseline for frontend architecture. на

RSC го менува менталниот модел на зградата во реакција

Traditional React development was always built on this assumption:


“The browser owns the runtime. We hydrate everything. Every piece of logic and data must live in the client, or be fetched via API.”


РСЦ ја крши оваа претпоставка.


Со RSC, сега ќе прашате:

    Ѕидот
  • Дали можам целосно да ја прескокнам хидратацијата?
  • Ѕидот
  • Може ли оваа компонента да работи чисто на серверот?
  • Ѕидот
  • Дали можам да ја колоцирам логиката со мојата корисничка интерфејс?


Тоа ни дава назадthe ability to separate display logic and interactivity cleanlyНо, не и со ракометот, туку соfirst-class architectural boundaries. на


Тоа веќе не е „клиент-прво“.“purpose-first.”


Секој дел од вашиот интерфејс постои каде што е најефикасен – сервер, клиент или статички.

Екосистемска промена кон серверот-прво рендерирање

RSC не се случува во изолација. поширокиот фронт-енд екосистем е подложен наserver-first rendering renaissance.


Frameworks like:

    Ѕидот
  • Remix се вклопува силно во серверот за вчитање на податоци и формирање на активности.
  • Ѕидот
  • Astro прифаќа нула-JS по дефолт, испраќајќи само острови на интерактивност.
  • Ѕидот
  • Qwik ја зема хидратацијата до крајност – одложувајќи ги сите JS додека не е експлицитно потребно.
  • Next.js 15, со RSC и App Router, сега го става перкомпонентното рендерирање во центарот на искуството на програмерите.


This isn’t a coincidence. It’s a reflection of a hard truth we’ve all felt:


Sending less JavaScript is the only way to scale interactivity and performance on the modern web.


Компонентите на React Server се реактивниот одговор на тој предизвик – длабоко интегрирани, ергономски и подготвени за производство.

Што да очекуваме следно

Како што React 19 и екосистемот созреваат, можеме да очекуваме:

    Ѕидот
  • Повеќе гранулирани алатки за дебугирање и профилирање за дрвја за РСЦ
  • Ѕидот
  • Подобрена интеграција на DevTools за да се покажат границите и временските линии за хидратација
  • Ѕидот
  • Повисоки шеми за стратегии за апстрактно рендерирање (на пример, <ServerOnly>, <DeferredClient> wrappers)
  • Ѕидот
  • Пошироко усвојување во дизајнерски системи, рамки и библиотеки (на пример, RSC-aware UI kits)
  • Ѕидот

Уживате ли во читањето?

Ако оваа статија ви помогна да размислувате поинаку за React и Next.js


Follow me on ХакерскиЗа повеќе длабоки нуркања

Хакерски

👉 Or connect with me on Линколнза да разговарате за React, архитектура или RSC миграција

Линколн
L O A D I N G
. . . comments & more!

About Author

Gianna Song HackerNoon profile picture
Gianna Song@gianna
Don’t take the realities of the world for granted :)

ВИСЕТЕ ТАГОВИ

ОВОЈ СТАТИЈА БЕШЕ ПРЕТСТАВЕН ВО...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks