Server Components Nedir?
React Server Components (RSC), React 18 ile tanıtılan ve sunucuda çalışan React bileşenleridir. Bu bileşenler, istemciye JavaScript göndermeden HTML render eder.
Server Components, web uygulamalarının performansını dramatik şekilde artırabilir.
Client vs Server Components
İki tip bileşen arasındaki farkları anlayalım:
Server Components
- Sunucuda render edilir
- Doğrudan veritabanına erişebilir
- API anahtarları güvende kalır
- JavaScript bundle'a eklenmez
Client Components
- Tarayıcıda çalışır
- State ve effects kullanabilir
- Event handler'lar ekleyebilir
- Browser API'lerine erişebilir
1// Server Component - varsayılan2async function ProductList() {3 // Doğrudan veritabanından veri çek4 const products = await db.products.findMany();5 6 return (7 <ul>8 {products.map(product => (9 <ProductCard key={product.id} product={product} />10 ))}11 </ul>12 );13}1415// Client Component - "use client" ile işaretle16"use client";1718import { useState } from 'react';1920function AddToCartButton({ productId }: { productId: string }) {21 const [loading, setLoading] = useState(false);22 23 const handleClick = async () => {24 setLoading(true);25 await addToCart(productId);26 setLoading(false);27 };28 29 return (30 <button onClick={handleClick} disabled={loading}>31 {loading ? 'Ekleniyor...' : 'Sepete Ekle'}32 </button>33 );34}Ne Zaman Hangisini Kullanmalı?
| Durum | Component Tipi |
|---|---|
| Veri çekme | Server |
| SEO önemli içerik | Server |
| State yönetimi | Client |
| Event handling | Client |
| Browser API kullanımı | Client |
| Hassas veriler | Server |
Performans Karşılaştırması
Server Components kullanarak:
- %40 daha küçük JavaScript bundle
- %60 daha hızlı ilk sayfa yüklemesi
- %30 daha iyi Core Web Vitals
1// Optimum pattern: Server'da veri çek, Client'ta interaktif2// page.tsx (Server)3import { ProductGrid } from './ProductGrid';4import { getProducts } from '@/lib/db';56export default async function ProductsPage() {7 const products = await getProducts();8 9 return (10 <main>11 <h1>Ürünler</h1>12 <ProductGrid products={products} />13 </main>14 );15}1617// ProductGrid.tsx (Client)18"use client";1920interface Props {21 products: Product[];22}2324export function ProductGrid({ products }: Props) {25 const [filter, setFilter] = useState('all');26 27 const filtered = products.filter(p => 28 filter === 'all' || p.category === filter29 );30 31 return (32 <>33 <FilterBar value={filter} onChange={setFilter} />34 <div className="grid">35 {filtered.map(p => (36 <ProductCard key={p.id} product={p} />37 ))}38 </div>39 </>40 );41}Best Practices
- Varsayılan olarak Server Component kullanın
- Client boundary'leri minimize edin
- Props olarak veri geçin
- Composition pattern kullanın
Sonuç
Server Components, modern React uygulamalarının temel yapı taşıdır. Doğru kullanıldığında hem performansı hem de geliştirici deneyimini önemli ölçüde artırır.
Fribe.co olarak React ve Next.js ile projeler geliştiriyoruz. İletişime geçin!
İlgili Yazılar
Projeniz İçin Yardıma mı İhtiyacınız Var?
Modern web teknolojileri ile projelerinizi hayata geçiriyoruz. İlk danışmanlık ücretsiz!
Ücretsiz Danışmanlık Al