Next.js · AI · poznámky z praxe
Osobní prostor pro zápisky z webového vývoje, AI nástrojů a vlastních projektů. Méně magazín, víc veřejný pracovní sešit.
5
článků
438
zobrazení
1
rok psaní
notes.status
Stavím vlastní CMS, zapisuju postupy a postupně ladím web jako produkt.
Některé zápisky budou krátké, jiné techničtější. Společné mají jedno: mají pomoct rychle pochopit, co jsem řešil a proč jsem to udělal právě takhle.
Píšu si postupy, chyby a drobné objevy tak, abych se k nim mohl vrátit.
Nejen ukázka syntaxe, ale hlavně proč něco dělám a kde se to v projektu používá.
Prompty, workflow a praktické použití, ne kouzelné řeči o budoucnosti.
Krátký vstup do toho, co jsem naposledy řešil, zapisoval nebo si chtěl uložit pro další projekt.
Tohke je první stavební kámen každé webové stránky! HTML je zkratka pro HyperText Markup Language. Ale to zní hrozně složitě, takže si to řekneme lidsky. Co je vlastně to HTML? Představ si, že máš před sebou prázdný papír. Nejsou na něm žádná pravidla, žádné čáry, nic. A teď chceš někomu napsat dopis. Aby ten člověk pochopil, co čte, používáš písmena, slova, věty. Když chceš něco zdůraznit, napíšeš to velkým písmem. Když chceš oddělit myšlenky, uděláš odstavec. A úplně stejně funguje HTML. HTML je jazyk, kterým říkáš počítači (respektive prohlížeči), jak má zobrazit text na webové stránce. HTML se nepovažuje za programovací jazyk, tím myslím v komunitě ajťáků, ale je to hlavní kostra webové stránky. Tato kostra obsahuje určité specifické znaky, které internetový prohlížeč dokáže přečíst a podle toho je zobrazit právě pomocí webové stránky. Není to programování v pravém slova smyslu. HTML nic „nepočítá“. Jen popisuje. Čím teda začneme? Přirovnání ke znakům Zároveň si musím představit tebe čtenáři, jako třeba moji vlastní babičku, které je 86 let a budu se ti to snažit co nejlépe vysvětlit a nejvíce jednoduše, jako bych to vysvětloval právě moji babičce samotné. Rozhodli jste se napsat dopis, kde chcete nejspíš mít, jako každý mentálně zralý člověk nějaký normální text. Aby ten dopis po Vás vůbec mohl někdo přečíst, tak bude muset určitě: písmena → tvoří slova slova → tvoří věty věty → tvoří odstavce V HTML je to podobné, jen místo písmen používáš tzv. značky (tagy ). Akorát je to tak, ze jste se rozhodli vytvořit webovou stránku, ale ta taky bude muset obsahovat "něco", co tam chcete sdělit. Budete chtít napsat internetový článek a k tomu, aby to internetový prohlížeč po Vás mohl přečíst, tak musíte používat právě tyto HTML znaky. Ty značky říkají: „tohle je nadpis“ „tohle je odstavec“ „tohle je odkaz“ Jak to vypadá v praxi? Normální text v dopisu by vypadal takhle: Toto je nadpis. Tohle je standardní text. To myslím chápe zatím každý z Vas, ne? Pokud jste třeba mladšího věku a nevíte vlastně, co to vůbec ten dopis je a znamená, obzvlášť v dnešní moderní době, tak si představte, jak píšete kamarádovi SMS, nebo zprávu na WhatsApp. No a to samé bude chtít napsat na webovou stránku, kterou berte jako kus nepopsaného papíru. V HTML to sdělíme takhle: <h1> Toto je nadpis </h1> <p> Tohle je standardní text. </p> V hlavě teď určitě zazní otázka, co se tady vlastně děje? <h1> říká: „toto je hlavní nadpis“ <p> říká: „toto je odstavec“ </h1> a </p> říkají: „tady to končí“ Když začínáš s HTML, nemysli na to jako na „kód“. Je to jako ve Wordu, když píšeš na počítači a chceš označit myší určitý text silným písmem, tak misto toho kliknutí na B znak ve Wordu, tak to začátek určitého textu označíš, kde chceš aby to začínalo být tučný písmo, napíšeš předtím znak HTML a to <bold> a zde to začne být tučný, a tímhle se to zas uzavře </bold> a zde je to zase normální text. Proč je HTML důležité? Bez HTML by web neexistoval. Každá stránka, kterou otevřeš — ať už je to Google, YouTube nebo e-shop — má v základu HTML. Je to úplný základ! Ale opravdu přátelé, jakmile nepochopíme HTML, tak se vážně dál nepodaří vůbec webovou stránku vytvořit. Pojďme se na to podívat ještě o trochu víc. Když chci vytvořit webovou stránku, tak se nabízí to, že potřebujeme taky nějaký Word, který za nás bude psát to "něco" na internet a ke všemu tam můžeme přidat obrázek a barevný nadpis nad ten obrázek. Takový program se nazývá "vývojové prostředí" a také editor, to znamená že pokud v tom budete něco psát, tak budete vlastně tu stránku vyvíjet - tím pádem se můžete nazývat webový vývojář. Vytvoříme novou složku do které vložíme nový soubor s názvem index.html a ten otevřeme a začneme zde stavět základní stavební kameny. Jsou zde logická pravidla, které je potřeba pochopit, jinak je zbytečné se o něco dalšího upřímně snažit, pokud se začneme ztrácet už v tomto začátku. Nejdřív sdělím v tomto souboru to, co chci aby náš prohlížeč vyzobrazil. To právě pomocí znaků, které dáváme to těch ostrých závorek <začátek> , tohle má sdělit, že zde začíná část nazvana :začátek", ale jak zjistíme, kde ten začátek stránky končí? No tím, že použijete uzavření této části pomocí dalšího znaku, který definujeme to, že tady začátek končí a to znakem: </začátek> , vidíš v čem je jiný, než ten první znak? Tak dobrý, ale co s tím? Začneme první zprávou a to jaký druh kódu bude náš prohlížeč číst. To definujeme tím, že hned na začátku sdělíme znakem
Základy HTML, část první
uloženo do blogu
Next.JS - routovaní a odkazy
Jak vytvořit menu pomocí funkčních odkazů. Základní struktura: Složky a Soubory V App Routeru definujete cesty pomocí složek. Aby byla cesta přístupná veřejně, musí složka obsahovat soubor page.tsx. Složka: Definuje segment cesty (např. /dashboard ). Soubor page.tsx: Definuje unikátní UI pro danou trasu. Soubor layout.tsx: Slouží pro sdílené UI (např. navigace), které se při přechodu mezi stránkami nepřekresluje. Dynamické routování Pokud potřebujete vytvořit cestu, která se mění na základě dat (např. ID produktu), použijete hranaté závorky: app/blog/[slug]/page.tsx odpovídá adrese /blog/ahoj-svete. Hodnota slug je pak dostupná v komponentě jako prop. // app/blog/[slug]/page.tsx export default async function Page({ params }: { params: Promise<{ slug: string }> }) { const slug = (await params).slug; return <h1>Příspěvek: {slug}</h1>; } Komponenta <Link> : Inteligentní navigace Komponenta <Link> rozšiřuje standardní HTML tag <a> a je základem pro rychlý pohyb v aplikaci. Funguje na třech hlavních pilířích: A. Prefetching (Předběžné načítání) Jakmile se <Link> objeví ve viewportu (v zorném poli uživatele), Next.js začne na pozadí stahovat kód pro danou trasu. Díky tomu je přechod na novou stránku téměř okamžitý. B. Client-side Navigation Navigace probíhá bez kompletního reloadu stránky. Next.js aktualizuje pouze ty části, které se mění (např. obsah v layoutu), a zachovává stav aplikace. C. Soft Navigation Na rozdíl od klasického odkazu, který by mohl resetovat stav React komponent, <Link> provádí tzv. "soft" navigaci. To znamená, že pokud máte v layoutu vyhledávací pole s textem, tento text při přepnutí stránky nezmizí. import Link from 'next/link'; export default function Navbar() { return ( <nav> <Link href="/">Domů</Link> <Link href="/dashboard" prefetch={false}> Dashboard (bez prefetchingu) </Link> </nav> ); } Shrnutí App Router využívá složky pro definici cest. Layouty šetří výkon tím, že se nepřekreslují. Link zajišťuje extrémní rychlost díky předběžnému načítání (prefetching).
Chci vytvořit web - část č.: 1
Co potřebuji, abych mohl vůbec začít? Hodně lidí je stále názoru, že programátor je někdo, kdo neustále v hlavě počítá různé rovnice, algoritmy a další matematické záhady a do toho ovládá špetku magie, ale ve skutečnosti je to trochu jinak. Pokud bych to měl dneska zpětně zhodnotit, tak je potřeba mít trochu logické uvažování a správné nástroje. Existují totiž různé programovací jazyky a vytvářet web je jako psát knihu. Potřebuji k tomu akorát obyčejný počítač (místo propisky a pera) a vývojové prostředí ( berte to jako kus papíru, kam bych psal), kde můžeme kód psát. Na internetu najdete spousty tutoriálů, ale doporučuji začít základy, které na sebe začnou navazovat a člověkovi to nakonec vše zaklapne. Vývojové prostředí - IDE (Integrated Development Environment) Co to je IDE? Nic extra, dřív se používal textový editor za mých mladých let, dneska máme mnohem lepší programy k dispozici a některé lze používat online z každého počítače, který je připojen k internetu. Nejčastěji používaná program, který je zdarma je: Visual Studio Code - ke stažení zde: https://code.visualstudio.com/. Existují další varianty, ale myslím že tenhle je pro začátek ideální. Program stáhněte a nainstalujte. Webhosting a vlastní doména Zde bych pouze dodal to, že není potřeba hned v začátku platit za webhosting, ale určitě to není špatné se naučit pracovat i s přenosem projektu rovnou na web. Webovou stránku, nebo aplikaci můžete naprogramovat a použít lokální server, ale jednou tuhle záležitost budete stejně muset řešit.
Víš proč je potřeba mít API?
Víš vůbec co je to API a k čemu je potřeba? Co dělá API? Next.js 16 - App Router je hodně čerstvý a API routes v něm fungují trochu jinak než ve starších verzích. API (Application Programming Interface) je dohoda, jak spolu komunikují dvě části aplikace nebo dva systémy. Představte si, že jdete do restaurace, do které dorazíte jako zákazník a chcete se usadit. Zde zákazník symbolizuje frontend část (např. zobrazení určitých dat na webové stránce uživateli). Zákazník se posadí ke stolu a má chuť na něco k jídlu. Kuchyně (backend) je někde vzadu a ty tam nemůžeš jen tak vběhnout. Takže co udělá zákazník? Zavolá číšníka a ten čísník je právě API . Číšník ale nechodí do kuchyně jen tak náhodně. Vždy musí vědět, co přesně má udělat . A právě tohle v API určují tzv. HTTP metody . Co vlastně říkáš tomu číšníkovi? Neříkáš jen „něco mi dones“. Vždycky říkáš konkrétní věc: „Chci vidět menu“ „Objednávám jídlo“ „Chci změnit objednávku“ „Tohle ruším“ A v API tomu říkáme HTTP metody. GET → chci data (ukaž mi něco) POST → posílám data (vytvářím něco nového) PUT → upravuji data DELETE → mažu data Tohle je základ. Nic složitého. Jak to souvisí s Next.js 16? V App Routeru se API routes píšou jako serverové funkce v souborech route.ts nebo route.js . Každá HTTP metoda je prostě exportovaná funkce. Představa, že začneme vytvářet webový blog // cesta souboru -> app/api/hello/route.ts export function GET() { return Response.json({ message: "Pane čísník? Pojďte k našemu stolu, prosím." }) } Tady jsme vytvořili jednoduchého „číšníka“, který umí reagovat na GET požadavek. Když teď otevřeš v prohlížeči: http://localhost:3000/api/hello Uvidíš JSON odpověď. Gratulace — právě jsi vytvořil první API route . Proč to tak je? Pokud pochopíš metaforu restaurace, pochopíš API. A pokud pochopíš API, můžeš začít psát aplikace, které opravdu něco dělají — nejen zobrazují statický obsah. Ty jako zákazník = frontend (např. webová stránka, která chce získat nebo poslat data) Kuchyně = backend (místo, kde se data zpracovávají) Číšník = API (prostředník, který přenáší požadavky tam a zpět) A díky tomu můžeš stavět aplikace, které nejen zobrazují data, ale i ukládají, mění nebo mažou — třeba uživatelské účty, komentáře, produkty, objednávky. Co by měl začátečník pochopit? API není nic magického. Je to jen způsob komunikace mezi dvěma částmi aplikace. HTTP metody říkají, co se má stát. Next.js 16 má nový způsob psaní API routes , ale princip zůstává stejný. Frontend nikdy nepracuje přímo s databází. Vždy přes API. API je jako číšník — přenáší požadavky a odpovědi. Jakmile pochopíš, že API je číšník, začne ti docházet ještě jedna důležitá věc — číšník si nepamatuje jen jednu větu typu „přines mi jídlo“. On musí zvládnout různé situace. Někdy zákazník přijde a chce jen vidět menu, jindy si objedná nové jídlo, jindy chce změnit objednávku, nebo ji úplně zrušit. Ten jednoduchý příklad s GET je jen začátek. Ve skutečné aplikaci má jeden endpoint často více funkcí najednou. Jedna URL, ale různé chování podle HTTP metody. Představ si třeba webový blog a /api/clanky . To je jedna „restaurace“. Ale: když přijde GET → vrátíš seznam článků když přijde POST → uložíš nový článek když přijde DELETE → smažeš článek Dneska to byla pouze teorie, příště si ukážeme jak vytvořit opravdou API, kterou zkusíme propsat na webovou stránku - tudíž do frontend, aby data byla vidět. Takže si to shrňme úplně jednoduše: API je jen prostředník mezi tím, co vidí uživatel (frontend), a tím, kde se pracuje s daty (backend). Je to číšník. A jakmile tohle pochopíš, začne ti dávat smysl celý backend. V dalším kroku už nepůjdeme jen teoreticky. Vytvoříme API, které opravdu uloží data a zobrazíme si je na stránce, aby bylo vidět, že to celé funguje v praxi.
Ústecký kód není anonymní magazín. Je to místo, kde si rovnám učení, ladím vlastní projekt a nechávám si za sebou stopu, která může pomoct i někomu dalšímu.