Domů O mně Služby Portfolio Učím Blog Kontakt
← Zpět na učím

03 — Struktura projektu (app/)

Výuka

Proč to existuje?

V Next.js je hlavní adresář app/ místem, kde vytváříš strukturu své aplikace. Místo ručního psaní konfigurace routů (jako v mnoha jiných frameworcích) Next.js automaticky vytváří cesty podle toho, jak jsou složky uspořádané. To zjednodušuje vývoj a udržuje kód přehledný.

Co je "mapování složek na URL"?

Mapování znamená přímou vazbu mezi strukturou složek a adresami v prohlížeči:

  • Složka app/blog/ → vytvoří URL cestu /blog
  • Složka app/blog/novinky/ → vytvoří URL cestu /blog/novinky

Představ si to jako organizaci souborů na disku: když máš složku "Dokumenty/Škola/Matematika", cesta k ní odpovídá struktuře. V Next.js je to stejné, jen místo souborů organizuješ stránky webu.

Jak to funguje?

Next.js sleduje adresář app/ a používá speciální soubory, které mají konkrétní význam:

Základní soubory:

  • page.js / page.tsx — komponenta, která se zobrazí na dané URL (obsah stránky)
  • layout.js / layout.tsx — obal pro všechny stránky v dané složce a podsložkách (např. společný header/footer)

Další užitečné soubory:

  • loading.js — co se zobrazí, když se stránka načítá
  • not-found.js — vlastní 404 stránka pro tuto sekci
  • route.js — server API endpoint (pro backend logiku)
  • error.js — vlastní chybová stránka

Speciální konvence:

  • Root layout (app/layout.js) je povinný a musí obsahovat a tagy
  • Složky v kulatých závorkách (název) slouží k organizaci kódu bez vlivu na URL

K čemu to slouží?

  • Přehledná organizace — víš přesně, kde najít kód pro každou stránku
  • Rychlejší vývoj — nepotřebuješ psát konfiguraci
  • Sdílené layouty — header a footer napíšeš jednou a platí pro celou sekci
  • Lepší spolupráce — celý tým chápe strukturu projektu na první pohled

Příklad struktury projektu

Zde je typická struktura Next.js projektu s App Routerem:

app/
├─ layout.js           # root layout (obsahuje <html> a <body>)
├─ page.js             # / (domovská stránka)
├─ about/
  └─ page.js          # /about (stránka O nás)
├─ blog/
  ├─ layout.js        # layout pro blog sekci (např. se sidebar)
  ├─ page.js          # /blog (seznam článků)
  └─ [slug]/
     └─ page.js       # /blog/nazev-clanku (dynamická stránka)
└─ (admin)/            # skupina pro organizaci (nemá vliv na URL)
   ├─ layout.js        # speciální layout pro admin sekci
   └─ dashboard/
      └─ page.js       # /dashboard (ne /admin/dashboard!)

Jak se to mapuje na URL:

  • app/page.js/ (domovská stránka)
  • app/about/page.js/about
  • app/blog/page.js/blog
  • app/blog/[slug]/page.js/blog/prvni-clanek, /blog/druhy-clanek atd.
  • app/(admin)/dashboard/page.js/dashboard (závorky se ignorují)

JavaScript

// app/page.js
export default function Home(){ return <h1>Domov</h1> }

TypeScript

// app/page.tsx
export default function Home(): JSX.Element{ return <h1>Domov</h1> }

Rozdíl JS vs TS

Typy v TS pomáhají při refaktoringu, ale struktura složek je stejná.

Tip

  • Skupiny (name) slouží k organizaci bez vlivu na URL.
  • Začni s jednoduchou strukturou (root layout + několik pages) a přidávej vnořené layouty postupně, jak aplikace roste.

Kvíz

Co znamená "mapování složek na URL" v Next.js?

V Next.js je struktura složek v adresáři app/ přímo propojená s URL strukturou. Například složka app/blog/ automaticky vytvoří cestu /blog, bez nutnosti psát konfiguraci. Toto se nazývá "file-based routing" a je to jeden z hlavních benefitů Next.js.

🎯 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 →

Připraveni začít?

Zaregistrujte se a získejte přístup ke všem dílům tohoto seriálu

Kontaktujte mě

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


Struktura lekcí (souborový strom)

06. Typescript specifika
  • v přípravě
08. Moduly tridy
  • v přípravě
09. React zaklady
  • v přípravě
10. React hooks
  • v přípravě
12. Nextjs server
  • v přípravě
13. Databaze auth
  • v přípravě
14. Nextjs pokrocile
  • v přípravě