React & Next.js6 dk

Next.js ve React Uygulamalarında Modern Render Mimarisini Anlamak

Server Components, Client Components, Streaming SSR ve Suspense: Web sitelerinde sıfır JS istemci paketiyle maksimum hız.

YazarŞakir Ortataş

Next.js ve React Uygulamalarında Modern Render Mimarisini Anlamak — İnteraktif Sistem Modeli

Full-Stack & Mobile

İzometrik modeli inceleyin veya sekmeler arasında geçiş yaparak farklı mimarileri keşfedin.

Geleneksel Tek Sayfa Uygulamaları (SPA), tarayıcıya megabaytlarca JavaScript kodu yükleyerek hem ilk sayfa açılışını geciktirir hem de arama motoru optimizasyonunu (SEO) zedeler. Next.js App Router ve React Server Components (RSC) bu denklemi kökten değiştirdi.

React Server Components (RSC) Devrimi

Server Components doğrudan sunucuda çalışır, veritabanına doğrudan bağlanır ve istemciye sıfır JavaScript kodu göndererek yalnızca saf HTML/React stream çıktısı iletir. Böylece devasa kütüphaneler (örneğin date-fns veya Markdown ayrıştırıcılar) istemci bundle boyutuna hiç yansımaz.

Suspense ile Streaming SSR

Eskiden sunucu tarafında veri çekerken en yavaş API isteği tüm sayfanın render edilmesini kilitlerdi. Streaming SSR sayesinde hızlı yüklenen kabuk anında ekrana basılır, geciken veri parçaları ise Suspense sınırları içinde geldikçe DOM'a enjekte edilir.

Dinamik Etiketler ve On-Demand Revalidation

Next.js'in revalidateTag API'si, içerik yönetim sistemlerinden (CMS) webhook geldiğinde ilgili sayfaları anında arka planda yenileyerek statik hızında dinamik içerik sunar.

Next.js ve React Uygulamalarında Modern Render Mimarisini Anlamak · Canlı Kod BloğuReact & Next.js · TS 5.x
Next.js ve React Uygulamalarında Modern Render Mimarisini Anlamak · Canlı Kod Bloğu
60 FPS · TS 5.x · Running
1// app/dashboard/analytics/page.tsx - Server Component
2export default async function AnalyticsPage({ params }: { params: { orgId: string } }) {
3 const orgPromise = fetchOrgDetails(params.orgId);
4 const metricsPromise = fetchTrafficMetrics(params.orgId);
5
6 return (
7 <div className="flex flex-col gap-6 p-8">
8 <Suspense fallback={<HeaderSkeleton />}>
9 <OrgHeader promise={orgPromise} />
10 </Suspense>
11
12 <div className="grid grid-cols-1 md:grid-cols-3 gap-4">
13 <Suspense fallback={<CardSkeleton />}>
14 <LiveTrafficWidget promise={metricsPromise} />
15 </Suspense>
16 </div>
17 </div>
18 );
19}
İletişim

Teknik vizyonunuzu çalışan bir ürüne dönüştürelim

TypeScript · React Native · React · NestJS · Node.js