App Router türleri; sunucu ve istemci bileşenleri
App Router varsayılanlarını (sunucu bileşenlerini), istemci bileşenlerine ne zaman geçileceğini ve rota işleyicilerinin türlerinin nasıl belirleneceğini anlayın.
App Router türleri; sunucu ve istemci bileşenleri, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 3 dersten oluşur.
Giriş
Amaç: App Router'ı TypeScript ile güvenle kullanmak. Sunucu bileşenlerini (varsayılan), gerektiğinde istemci bileşenlerini etkinleştirmeyi ve API uç noktaları için rota işleyicilerine tür bilgisi vermeyi göreceksiniz.
- Sunucu ve istemci yetenekleri
- Aralarında türü belirtilmiş özellikleri aktarma
- Türü belirtilmiş NextRequest/NextResponse
Sunucu bileşeni
app/ altındaki dosyalar varsayılan olarak sunucu bileşenleridir. Yalnızca sunucuya özgü kodu çalıştırabilir ve verileri işleme öncesinde alabilirsiniz.
// app/page.tsx (server component by default)
export default async function Page() {
// Server code: read env, fetch data, call DB (conceptually)
const data: { message: string } = { message: "Hello from server component" }
return (
<main style={{ display: "grid", gap: 8 }}>
<h1>Home</h1>
<p>{data.message}</p>
</main>
)
}İstemci bileşeni
Kancaları ve olay işleyicilerini etkinleştirmek için en üste "use client" yönergesini ekleyin. İstemci bileşenleri tarayıcıda çalışır.
"use client"
import { useState } from "react"
// app/components/Counter.tsx (client component)
export default function Counter() {
const [n, setN] = useState(0)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}Sunucudan istemciye özellikler
Verileri sunucuda hesaplayın ve türü belirtilmiş özellikler olarak istemci bileşenlerine aktarın. Yalnızca sunucuda çalışması gereken mantığı istemciden uzak tutun.
// app/page.tsx (server) + client import
import Counter from "./components/Counter"
export default async function Page() {
const initial = 5 // fetched or computed on the server
return (
<main style={{ display: "grid", gap: 12 }}>
<h2>Dashboard</h2>
<CounterWithStart start={initial} />
</main>
)
}
// app/components/CounterWithStart.tsx
"use client"
import { useState } from "react"
export default function CounterWithStart({ start }: { start: number }) {
const [n, setN] = useState(start)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}Rota işleyicileri
app/api/*/route.ts altındaki türü belirtilmiş işleyiciler için NextRequest/NextResponse kullanın. Durum kodlarıyla JSON döndürün.
// app/api/hello/route.ts (App Router API)
import { NextRequest, NextResponse } from "next/server"
export async function GET(req: NextRequest) {
const name = req.nextUrl.searchParams.get("name") ?? "world"
const body: { message: string } = { message: `Hello, ${name}!` }
return NextResponse.json(body, { status: 200 })
}
export async function POST(req: NextRequest) {
const payload = (await req.json()) as { name?: string }
const body = { created: true, name: payload.name ?? "anon" }
return NextResponse.json(body, { status: 201 })
}İpuçları
İpuçları:
- Varsayılan olarak sunucu bileşenlerini kullanın; yalnızca etkileşime ihtiyaç duyduğunuzda istemciyi etkinleştirin.
- Sunucu ile istemci arasındaki özellikleri küçük ve serileştirilebilir tutun.
- Türü belirtilmiş
NextResponse.jsonbiçimlerini tutarlı şekilde kullanın.
App Router istemci kontrolü
Hızlı kontrol: App Router altındaki bir bileşen dosyasında kancaları nasıl etkinleştirirsiniz?
Özet
Özet: App Router varsayılan olarak sunucu bileşenlerini kullanır; etkileşim için "use client" ekleyin, türü belirtilmiş özellikleri sınır boyunca aktarın ve rota işleyicilerine NextRequest/NextResponse ile tür bilgisi verin.
Sıkça Sorulan Sorular
“App Router türleri; sunucu ve istemci bileşenleri” dersi ücretsiz mi?
Evet — “App Router türleri; sunucu ve istemci bileşenleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 3 dersten oluşur.
“App Router türleri; sunucu ve istemci bileşenleri” dersinde ne öğreneceğim?
App Router varsayılanlarını (sunucu bileşenlerini), istemci bileşenlerine ne zaman geçileceğini ve rota işleyicilerinin türlerinin nasıl belirleneceğini anlayın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.
“App Router türleri; sunucu ve istemci bileşenleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- App Router türleri; sunucu ve istemci bileşenleri
- Veri getirme ve eylem türlerini belirleme
- Ortam türlerini belirleme ve yapılandırma