Pages Router ve App Router Karşılaştırması
Next.js yönlendirme yaklaşımlarını karşılaştırın: dosya tabanlı Pages Router ile iç içe yerleşimler, yükleme ve hata sınırları sunan yeni App Router.
Pages Router ve App Router Karşılaştırması, CoddyKit'te ücretsiz bir Frontend Academy dersidir. Bu, 4 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, Frontend Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Frontend Academy kursu toplamda 4 dersten oluşur.
Tek Framework, İki Yönlendirici
Next.js'te iki yönlendirme sistemi vardır: özgün Pages Router (pages/ dizini) ve daha yeni App Router (app/ dizini, Next 13+). Her ikisi de Next 14/15'te çalışmaya devam eder.
Pages Router — Dosya Tabanlı Yönlendirme
pages/ altındaki her dosya bir rota hâline gelir. Dinamik bölümler köşeli parantez kullanır: pages/users/[id].tsx, /users/123 ile eşleşir.
pages/
index.tsx // route: /
about.tsx // route: /about
blog/
index.tsx // route: /blog
[slug].tsx // route: /blog/:slug
api/
users.ts // API route: /api/usersPages Router — Veri Getirme
Özel dışa aktarımlar veri getirme davranışını bildirir: getStaticProps (SSG), getServerSideProps (SSR), getStaticPaths (dinamik rotalara sahip SSG).
// pages/posts/[slug].tsx
export async function getStaticPaths() {
const slugs = await fetchAllSlugs();
return { paths: slugs.map(s => ({ params: { slug: s } })), fallback: false };
}
export async function getStaticProps({ params }) {
const post = await fetchPost(params.slug);
return { props: { post }, revalidate: 60 };
}
export default function Post({ post }) {
return <article>{post.body}</article>;
}App Router — Klasör Tabanlı Yönlendirme
App Router, rota bölümleri olarak klasörleri kullanır. Bir klasörün içindeki page.tsx dosyası sayfayı tanımlar.
app/
layout.tsx // shared root layout
page.tsx // route: /
about/
page.tsx // route: /about
blog/
page.tsx // route: /blog
[slug]/
page.tsx // route: /blog/:slugApp Router — Özel Dosyalar
Bölüm başına özel dosyalar güçlü temel yapı taşları sağlar: layout.tsx (alt öğelerin çevresindeki kalıcı arayüz), loading.tsx (Suspense geri dönüş görünümü), error.tsx (hata sınırı), not-found.tsx.
İç İçe Düzenler
App Router düzenleri iç içe rotaları sarar ve gezinme boyunca kalıcı olur; yeniden bağlanmaz.
// app/dashboard/layout.tsx
export default function DashboardLayout({ children }) {
return (
<div className="dashboard">
<Sidebar />
<main>{children}</main>
</div>
);
}
// app/dashboard/settings/page.tsx renders inside the Sidebar layoutApp Router'da Veri Getirme
Sunucu component'leri asenkron olabilir ve verileri doğrudan getirebilir; getServerSideProps/getStaticProps gerekmez. Component sunucuda çalışır ve istemciye yalnızca HTML gönderir.
// app/posts/[slug]/page.tsx (Server Component by default)
export default async function Post({ params }) {
const post = await fetch(`https://api/posts/${params.slug}`, {
next: { revalidate: 60 } // ISR-like caching
}).then(r => r.json());
return <article>{post.body}</article>;
}App Router'da İstemci Component'leri
Bir dosyanın en üstüne 'use client' ekleyerek component'ini İstemci Component'i olarak işaretleyin (etkileşimlidir, tarayıcıda çalışır).
// app/Counter.tsx
'use client';
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
}API Rotaları ve Rota İşleyicileri
Pages Router: pages/api/users.ts, req/res içeren varsayılan bir işlevi dışa aktarır. App Router: app/api/users/route.ts, standart Request/Response'u kullanarak HTTP yöntemlerini (GET, POST) adlandırılmış dışa aktarımlar olarak sunar.
// app/api/users/route.ts
export async function GET(request: Request) {
const users = await db.users.findMany();
return Response.json(users);
}
export async function POST(request: Request) {
const body = await request.json();
const user = await db.users.create({ data: body });
return Response.json(user, { status: 201 });
}Geçiş Stratejisi
Her iki yönlendirici de aynı projede birlikte bulunabilir; sayfaları birer birer, aşamalı olarak taşıyabilirsiniz. Bir çakışma olduğunda App Router önceliklidir.
Hangisi Ne Zaman Kullanılmalı?
Yeni projeler: App Router (daha güçlü ve yatırımın güncel odağı). Mevcut Pages Router projeleri: olduğu gibi kalın veya aşamalı olarak geçiş yapın. Düzenlere ya da RSC'ye ihtiyaç duymayan küçük statik siteler: her ikisi de kullanılabilir.
Hızlı Kontrol
Next.js Uygulama Yönlendiricisi'nde bir bileşeni İstemci Bileşeni olarak nasıl işaretlersiniz?
Özet: Sayfalar Yönlendiricisi ve Uygulama Yönlendiricisi
Sayfalar Yönlendiricisi: dosya tabanlı, getStaticProps/getServerSideProps. Uygulama Yönlendiricisi (Next 13+): klasör tabanlı, eşzamansız Sunucu Bileşenleri, iç içe düzenler, yükleme/hata dosyaları. İstemci etkileşimini 'use client' ile işaretleyin. API rotaları: pages/api/* ile app/api/*/route.ts ve HTTP yöntemlerinin dışa aktarımları. İkisi birlikte kullanılabilir; Uygulama Yönlendiricisi etkin olarak geliştirilmektedir.
Sıkça Sorulan Sorular
“Pages Router ve App Router Karşılaştırması” dersi ücretsiz mi?
Evet — “Pages Router ve App Router Karşılaştırması” 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 Frontend Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Frontend Academy kursu toplamda 4 dersten oluşur.
“Pages Router ve App Router Karşılaştırması” dersinde ne öğreneceğim?
Next.js yönlendirme yaklaşımlarını karşılaştırın: dosya tabanlı Pages Router ile iç içe yerleşimler, yükleme ve hata sınırları sunan yeni App Router. Frontend 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.
Frontend Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Frontend 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, 4 dersinin 1. dersidir.
“Pages Router ve App Router Karşılaştırması” 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 Frontend Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Frontend 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
- Pages Router ve App Router Karşılaştırması
- Sunucu Bileşenleri ve İstemci Bileşenleri
- SSG, SSR ve ISR
- Next.js API Rotaları ve Ara Yazılım