06 — File-based routing
Výuka
Co je "routing"?
Routing (směrování) je systém, který rozhoduje, co se stane, když uživatel navštíví určitou adresu (URL) ve tvé aplikaci.
Představ si to jako recepci v budově: když přijdeš a řekneš "chci na oddělení prodeje", recepční tě nasměruje na správné patro a dveře. Routing dělá to samé pro webové stránky:
- Uživatel napíše
/blog→ zobrazí se stránka s blogem - Uživatel napíše
/kontakt→ zobrazí se kontaktní formulář - Uživatel napíše
/produkty/123→ zobrazí se detail produktu s ID 123
Proč to existuje?
V klasických webových aplikacích (např. v Reactu bez frameworku) musíš ručně psát konfiguraci:
// Tradiční způsob - musíš psát konfiguraci
<Route path="/blog" component={BlogPage} />
<Route path="/kontakt" component={ContactPage} />
<Route path="/produkty/:id" component={ProductDetail} />
Tohle je:
- Zdlouhavé — každou cestu musíš ručně definovat
- Náchylné k chybám — snadno zapomeneš přidat route
- Těžko udržovatelné — konfigurace se může rozrůst do obřích souborů
Jak funguje file-based routing?
Next.js tento problém řeší elegantně: struktura složek = struktura URL. Nepotřebuješ psát žádnou konfiguraci.
Pravidlo je jednoduché:
- Vytvoř složku → vytvoří se cesta
- Přidej
page.jsdo složky → vytvoří se stránka na té cestě
To se nazývá file-based routing (routing založený na souborech).
K čemu to slouží?
- Rychlý vývoj — vytvoření nové stránky = vytvoření složky a souboru
- Přehlednost — když hledáš kód pro
/blog, víš, že je vapp/blog/ - Méně chyb — nemůžeš zapomenout přidat route do konfigurace
- Jednodušší refaktoring — přejmenování složky = přejmenování URL (automaticky)
Praktické příklady struktury
app/
├─ page.js # → /
├─ about/
│ └─ page.js # → /about
├─ blog/
│ ├─ page.js # → /blog
│ └─ [slug]/
│ └─ page.js # → /blog/prvni-clanek, /blog/druhy-clanek atd.
└─ products/
├─ page.js # → /products
└─ [id]/
└─ page.js # → /products/1, /products/2 atd.
Poznámka: Hranaté závorky [slug] nebo [id] označují dynamické segmenty — o těch se dozvíš víc v další lekci o dynamických routách.
JavaScript
// app/products/page.js -> /products
export default function Products(){ return <div>Products</div> }
TypeScript
export default function Products(): JSX.Element{ return <div>Products</div> }
Rozdíl JS vs TS
Stejný princip; TS přidává typy, ale routing je nezávislý na jazyce.
Tip
- Použij logické názvy složek, vyhni se mezerám a diakritice v cestách (např. raději
claneknežčlánek). - Složky můžeš vnořovat do sebe libovolně hluboko — Next.js to automaticky promítne do URL.
Kvíz
Co je hlavní výhoda file-based routingu v Next.js?
File-based routing znamená, že když vytvoříš složku app/blog/ a v ní soubor page.js, Next.js automaticky vytvoří cestu /blog. Nepotřebuješ psát konfiguraci routů jako v tradičních frameworcích — prostě vytvoříš složku a funguje to.
🎯 Závěrečný projekt
Po dokončení všech 8 dílů vytvoříte jednoduchou Todо aplikaci v čistém JavaScriptu. Naučíte se, jak aplikovat vše, co jste se naučili, na reálný projekt.
Zobrazit podrobnosti projektu →Informace o seriálu
Obtížnost
Délka
Cca 480 minut
Počet videí
8 videí + projekty
Certifikát
Po dokončení obdržíte certifikát
Lekce v této sekci
- 01 — Co je Next.js
- 02 — Vytvoření projektu
- 03 — Struktura projektu (app/)
- 04 — Page komponenty (page.js / page.tsx)
- 05 — Layout komponenty (layout.js / layout.tsx)
- 06 — File-based routing
- 07 — Dynamické routy ([id]/page.js)
- 08 — Link komponenta (navigace)
- 09 — Image komponenta (next/image)
- 10 — Metadata (title, description, Open Graph)
- 11 — Loading UI (loading.js / loading.tsx)
- 12 — Error handling (error.js / error.tsx)
- 13 — Not Found (not-found.js / not-found.tsx)
Struktura lekcí (souborový strom)
- 1.1 Úvod do JavaScriptu a TypeScriptu
- 1.2 Nastavení prostředí
- 1.3 První program
- 1.4 Proměnné: var, let, const
- 1.5 Datové typy - přehled
- 1.6 String (řetězce)
- 1.7 Number (čísla)
- 1.8 Boolean (pravda/nepravda)
- 1.9 Null a Undefined
- 1.10 Type Inference vs Annotations
- 1.11 Aritmetické operátory
- 1.12 Porovnávací operátory
- 1.13 Logické operátory
- 1.14 Komentáře
- 1.15 Console metody
- 03.01 Deklarace funkce
- 03.02 Function Expression
- 03.03 Arrow Functions
- 03.04 Parametry a argumenty
- 03.05 Return hodnoty
- 03.06 Výchozí parametry
- 03.07 Rest parametry
- 03.08 Co je Scope
- 03.09 Lexikální Scope
- 03.10 Řetězec Scope
- 03.11 Globální Scope
- 03.12 Životní Cyklus Proměnných
- 03.13 Omezení Scope
- 03.14 Použití Closures
- 03.15 Callback funkce
- 03.16 Higher-order Functions
- 03.17 IIFE
- 03.18 Void funkce
- 03.19 Rekurze
- v přípravě
- v přípravě
- v přípravě
- v přípravě
- 01 — Co je Next.js
- 02 — Vytvoření projektu
- 03 — Struktura projektu (app/)
- 04 — Page komponenty (page.js / page.tsx)
- 05 — Layout komponenty (layout.js / layout.tsx)
- 06 — File-based routing
- 07 — Dynamické routy ([id]/page.js)
- 08 — Link komponenta (navigace)
- 09 — Image komponenta (next/image)
- 10 — Metadata (title, description, Open Graph)
- 11 — Loading UI (loading.js / loading.tsx)
- 12 — Error handling (error.js / error.tsx)
- 13 — Not Found (not-found.js / not-found.tsx)
- v přípravě
- v přípravě
- v přípravě