# Projekt rozšírenia prehliadača Časť 1: Všetko o prehliadačoch ```mermaid journey title Vaša cesta vývoja prehliadačového rozšírenia section Základy Understand browsers: 3: Student Learn extension types: 4: Student Setup development: 4: Student section Vývoj Build interface: 4: Student Add functionality: 5: Student Handle data: 5: Student section Integrácia Test in browser: 5: Student Debug issues: 4: Student Polish experience: 5: Student ```  > Sketchnote od [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Kvíz pred prednáškou [Kvíz pred prednáškou](https://ff-quizzes.netlify.app/web/quiz/23) ### Úvod Rozšírenia prehliadača sú mini-aplikácie, ktoré vylepšujú váš zážitok z prehliadania webu. Rovnako ako pôvodná vízia Tima Berners-Lee o interaktívnom webe, rozšírenia rozširujú schopnosti prehliadača nad rámec jednoduchého zobrazenia dokumentov. Od správcov hesiel, ktorí chránia vaše účty, až po výber farieb, ktorý pomáha dizajnérom vybrať dokonalé odtiene – rozšírenia riešia každodenné výzvy pri prehliadaní. Predtým, než vytvoríme vaše prvé rozšírenie, pochopme, ako prehliadače fungujú. Rovnako ako Alexander Graham Bell potreboval pochopiť prenos zvuku pred vynálezom telefónu, znalosť základov prehliadača vám pomôže vytvoriť rozšírenia, ktoré sa bezproblémovo integrujú so systémami prehliadača. Na konci tejto lekcie pochopíte architektúru prehliadača a začnete vytvárať svoje prvé rozšírenie. ```mermaid mindmap root((Architektúra prehliadača)) Core Components Rendering Engine JavaScript Engine Network Stack Storage APIs User Interface Adresný riadok Správa kariet Záložky Ikony rozšírení Extension System Manifest Files Content Scripts Background Pages Popup Windows Security Model Same-Origin Policy Permissions API Content Security Isolated Worlds Development Tools DevTools Integration Debug Console Performance Monitor Extension Inspector ``` ## Pochopenie webových prehliadačov Webový prehliadač je v podstate sofistikovaný interpret dokumentov. Keď do adresného riadku zadáte "google.com", prehliadač vykoná zložitú sériu operácií – požaduje obsah zo serverov po celom svete, potom analyzuje a vyrenderuje tento kód do interaktívnych webových stránok, ktoré vidíte. Tento proces odráža spôsob, akým bol prvý webový prehliadač WorldWideWeb navrhnutý Timom Berners-Leeom v roku 1990, aby sprístupnil hypertextové dokumenty všetkým. ✅ **Trocha histórie**: Prvý prehliadač sa volal 'WorldWideWeb' a vytvoril ho Sir Timothy Berners-Lee v roku 1990.  > Niektoré skoré prehliadače, podľa [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) ### Ako prehliadače spracovávajú webový obsah Proces medzi zadaním URL a zobrazením webovej stránky zahŕňa niekoľko koordinovaných krokov, ktoré prebiehajú počas niekoľkých sekúnd: ```mermaid sequenceDiagram participant User participant Browser participant Extension participant DNS participant Server User->>Browser: Zadá URL a stlačí Enter Browser->>Extension: Spustí udalosť beforeRequest Extension->>Extension: Skontroluje, či je potrebná úprava URL Browser->>DNS: Vyhľadá IP adresu servera DNS->>Browser: Vráti IP adresu Browser->>Server: Požaduje obsah webovej stránky Server->>Browser: Posiela HTML, CSS a JavaScript Browser->>Extension: Spustí udalosť beforeResponse Extension->>Extension: Upravi obsah, ak je to potrebné Browser->>User: Zobrazí kompletnú webovú stránku Extension->>User: Zobrazí aktualizácie UI rozšírenia ``` **Tento proces dosahuje:** - **Prekladá** ľudsky čitateľnú URL na IP adresu servera pomocou DNS vyhľadávania - **Nadväzuje** bezpečné pripojenie s webovým serverom pomocou protokolov HTTP alebo HTTPS - **Požaduje** konkrétny obsah webovej stránky zo servera - **Prijíma** HTML značkovanie, CSS štýly a JavaScript kód zo servera - **Vyrenderuje** všetok obsah do interaktívnej webovej stránky, ktorú vidíte ### Hlavné funkcie prehliadača Moderné prehliadače poskytujú množstvo funkcií, ktoré môžu vývojári rozšírení využiť: | Funkcia | Účel | Príležitosti pre rozšírenia | |---------|---------|------------------------| | **Rendering Engine** | Zobrazuje HTML, CSS a JavaScript | Modifikácia obsahu, vkladanie štýlov | | **JavaScript Engine** | Vykonáva JavaScript kód | Vlastné skripty, API interakcie | | **Local Storage** | Ukladá dáta lokálne | Užívateľské preferencie, cache dáta | | **Network Stack** | Spracováva webové požiadavky | Monitorovanie požiadaviek, analýza dát | | **Security Model** | Chráni užívateľov pred škodlivým obsahom | Filtrovanie obsahu, bezpečnostné vylepšenia | **Pochopenie týchto funkcií vám pomôže:** - **Určiť**, kde vaše rozšírenie môže priniesť najväčšiu hodnotu - **Vybrať** správne API prehliadača pre funkcionalitu rozšírenia - **Navrhnúť** rozšírenia, ktoré efektívne spolupracujú so systémami prehliadača - **Zaistiť**, že vaše rozšírenie dodržiava bezpečnostné odporúčania prehliadača ### Úvahy o vývoji pre viac prehliadačov Rôzne prehliadače implementujú štandardy s drobnými rozdielmi, podobne ako rôzne programovacie jazyky môžu inak spracovať rovnaký algoritmus. Chrome, Firefox a Safari majú jedinečné charakteristiky, ktoré musia vývojári počas tvorby rozšírení zohľadniť. > 💡 **Praktická rada**: Použite [caniuse.com](https://www.caniuse.com) na kontrolu, ktoré webové technológie podporujú jednotlivé prehliadače. To je neoceniteľné pri plánovaní funkcií vášho rozšírenia! **Kľúčové úvahy pri vývoji rozšírenia:** - **Testujte** vaše rozšírenie na prehliadačoch Chrome, Firefox a Edge - **Prispôsobte** sa rôznym API rozšírení a formátom manifestu - **Zvládnite** rozdiely vo výkonnosti a obmedzeniach - **Poskytnite** záložné riešenia pre špecifické funkcie prehliadačov, ktoré nemusia byť dostupné ✅ **Analytický pohľad**: Môžete zistiť, ktoré prehliadače vaši používatelia preferujú tým, že do svojich webových projektov nainštalujete analytické balíky. Tieto údaje vám pomôžu uprednostniť, ktoré prehliadače podporovať ako prvé. ## Pochopenie rozšírení prehliadača Rozšírenia prehliadača riešia bežné problémy pri prehliadaní webu tým, že pridávajú funkcionalitu priamo do rozhrania prehliadača. Namiesto potreby samostatných aplikácií alebo zložitých pracovných postupov poskytujú rozšírenia okamžitý prístup k nástrojom a funkciám. Tento koncept odzrkadľuje, ako si skorí pionieri v oblasti počítačov ako Douglas Engelbart predstavovali rozširovanie ľudských schopností pomocou technológie – rozšírenia rozširujú základnú funkcionalitu vášho prehliadača. ```mermaid quadrantChart title Kategórie rozšírení prehliadača x-axis Jednoduché --> Komplexné y-axis Osobné použitie --> Profesionálne nástroje quadrant-1 Nástroje pre vývojárov quadrant-2 Podnikové riešenia quadrant-3 Osobné nástroje quadrant-4 Aplikácie na zvýšenie produktivity Ad Blockers: [0.3, 0.2] Password Managers: [0.7, 0.3] Color Pickers: [0.4, 0.8] Code Formatters: [0.8, 0.9] Note Taking: [0.6, 0.5] Video Downloaders: [0.5, 0.2] Time Trackers: [0.7, 0.6] Screenshot Tools: [0.4, 0.4] ``` **Populárne kategórie rozšírení a ich výhody:** - **Nástroje produktivity**: Manažéri úloh, aplikácie na poznámky a časové trackery, ktoré pomáhajú zostať organizovaným - **Bezpečnostné vylepšenia**: Správcovia hesiel, blokovače reklám a nástroje na ochranu súkromia, ktoré chránia vaše dáta - **Vývojárske nástroje**: Formátovače kódu, výber farieb a ladivé nástroje, ktoré zjednodušujú vývoj - **Vylepšenie obsahu**: Režimy čítania, sťahovače videí a nástroje na screenshoty, ktoré zlepšujú váš webový zážitok ✅ **Otázka na zamyslenie**: Aké sú vaše obľúbené rozšírenia prehliadača? Aké konkrétne úlohy vykonávajú a ako zlepšujú váš zážitok z prehliadania? ### 🔄 **Pedagogická kontrola** **Pochopenie architektúry prehliadača**: Predtým, než prejdete k vývoju rozšírení, uistite sa, že viete: - ✅ Vysvetliť, ako prehliadače spracovávajú webové požiadavky a vyrenderujú obsah - ✅ Identifikovať hlavné komponenty architektúry prehliadača - ✅ Pochopiť, ako rozšírenia integrujú funkcionalitu prehliadača - ✅ Rozpoznať bezpečnostný model, ktorý chráni používateľov **Rýchly test sami sebe**: Dokážete sledovať cestu od zadania URL po zobrazenie webovej stránky? 1. **DNS vyhľadávanie** prevádza URL na IP adresu 2. **HTTP požiadavka** načíta obsah zo servera 3. **Analýza (parsing)** spracuje HTML, CSS a JavaScript 4. **Rendering** zobrazí finálnu webstránku 5. **Rozšírenia** môžu modifikovať obsah na viacerých krokoch ## Inštalácia a správa rozšírení Pochopenie procesu inštalácie rozšírenia vám pomôže predvídať používateľský zážitok, keď si ľudia inštalujú vaše rozšírenie. Proces inštalácie je štandardizovaný vo väčšine moderných prehliadačov, s drobnými rozdielmi v dizajne rozhrania.  > **Dôležité**: Uistite sa, že máte zapnutý režim vývojára a povolené rozšírenia z iných obchodov, keď testujete vlastné rozšírenia. ### Proces inštalácie rozšírenia počas vývoja Keď vyvíjate a testujete vlastné rozšírenia, riaďte sa týmto postupom: ```mermaid flowchart TD A[Písať kód] --> B[Zostaviť rozšírenie] B --> C{Prvá inštalácia?} C -->|Áno| D[Nahrať nebalené] C -->|Nie| E[Znovu načítať rozšírenie] D --> F[Testovať funkčnosť] E --> F F --> G{Funguje správne?} G -->|Nie| H[Ladiť problémy] G -->|Áno| I[Pripravené pre používateľov] H --> A I --> J[Publikovať do obchodu] style A fill:#e1f5fe style F fill:#e8f5e8 style I fill:#f3e5f5 style J fill:#fff3e0 ``` ```bash # Krok 1: Vytvorte svoje rozšírenie npm run build ``` **Čo tento príkaz dosahuje:** - **Kompiluje** váš zdrojový kód do súborov pripravených pre prehliadač - **Zabaluje** JavaScript moduly do optimalizovaných balíkov - **Generuje** finálne súbory rozšírenia v priečinku `/dist` - **Pripravuje** rozšírenie na inštaláciu a testovanie **Krok 2: Prejdite na správu rozšírení prehliadača** 1. **Otvorte** stránku správy rozšírení vášho prehliadača 2. **Kliknite** na tlačidlo "Nastavenia a ďalšie" (ikona `...`) v pravom hornom rohu 3. **Vyberte** v rozbaľovacom menu "Rozšírenia" **Krok 3: Načítajte svoje rozšírenie** - **Pre nové inštalácie**: Zvoľte `load unpacked` a vyberte váš priečinok `/dist` - **Pre aktualizácie**: Kliknite na `reload` vedľa už nainštalovaného rozšírenia - **Pre testovanie**: Zapnite "Režim vývojára" pre prístup k rozšíreným debuggovacím funkciám ### Produkčná inštalácia rozšírenia > ✅ **Poznámka**: Tieto pokyny pre vývoj sú špeciálne určené pre rozšírenia, ktoré si vytvoríte sami. Na inštaláciu publikovaných rozšírení navštívte oficiálne obchody rozšírení prehliadačov, napríklad [Microsoft Edge Add-ons store](https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home). **Pochopenie rozdielov:** - **Vývojové inštalácie** umožňujú testovať nepublikované rozšírenia počas vývoja - **Inštalácie z obchodov** poskytujú overené, publikované rozšírenia s automatickými aktualizáciami - **Sideloading** umožňuje inštaláciu rozšírení mimo oficiálnych obchodov (vyžaduje režim vývojára) ## Vytvorenie rozšírenia o uhlíkovej stope Vytvoríme rozšírenie prehliadača, ktoré zobrazuje uhlíkovú stopu spotreby energie vo vašom regióne. Tento projekt demonštruje základné koncepty vývoja rozšírení a zároveň tvorí praktický nástroj na environmentálne povedomie. Tento prístup nasleduje princíp "učenia sa praxou", ktorý sa osvedčil už od teórií Johna Deweyho – spájanie technických zručností so zmysluplnými aplikáciami v reálnom svete. ### Požiadavky projektu Pred začiatkom vývoja si pripravme potrebné zdroje a závislosti: **Povolený prístup k API:** - **[CO2 Signal API kľúč](https://www.co2signal.com/)**: Zadajte svoju e-mailovú adresu pre získanie bezplatného API kľúča - **[Kód regiónu](http://api.electricitymap.org/v3/zones)**: Nájdite kód vášho regiónu pomocou [Electricity Map](https://www.electricitymap.org/map) (napr. Boston používa 'US-NEISO') **Nástroje pre vývoj:** - **[Node.js a NPM](https://www.npmjs.com)**: Nástroj na správu balíčkov pre inštaláciu závislostí projektu - **[Štartovací kód](../../../../5-browser-extension/start)**: Stiahnite priečinok `start` na začatie vývoja ✅ **Viac informácií**: Zlepšite svoje zručnosti so správou balíčkov v tomto [komplexnom module Learn](https://docs.microsoft.com/learn/modules/create-nodejs-project-dependencies/?WT.mc_id=academic-77807-sagibbon) ### Pochopenie štruktúry projektu Pochopenie štruktúry projektu pomáha efektívne organizovať vývojovú prácu. Rovnako ako bola Knižnica Alexandra usporiadaná na jednoduché vyhľadávanie vedomostí, dobre štruktúrovaný kód zefektívňuje vývoj: ``` project-root/ ├── dist/ # Built extension files │ ├── manifest.json # Extension configuration │ ├── index.html # User interface markup │ ├── background.js # Background script functionality │ └── main.js # Compiled JavaScript bundle ├── src/ # Source development files │ └── index.js # Your main JavaScript code ├── package.json # Project dependencies and scripts └── webpack.config.js # Build configuration ``` **Čo dosahuje každý súbor:** - **`manifest.json`**: **Definuje** metadata rozšírenia, povolenia a vstupné body - **`index.html`**: **Vytvára** používateľské rozhranie, ktoré sa zobrazí po kliknutí na rozšírenie - **`background.js`**: **Rieši** úlohy na pozadí a nasluchuje udalosti prehliadača - **`main.js`**: **Obsahuje** finálny zabalený JavaScript po build procese - **`src/index.js`**: **Obsahuje** hlavný vývojový kód, ktorý sa kompiluje do `main.js` > 💡 **Tip na organizáciu**: Uložte si svoj API kľúč a kód regiónu do bezpečnej poznámky na ľahký prístup počas vývoja. Budete tieto hodnoty potrebovať na testovanie funkčnosti rozšírenia. ✅ **Bezpečnostná poznámka**: Nikdy neposielajte API kľúče ani citlivé údaje do svojho repozitára. Ukážeme vám, ako s nimi bezpečne narábať v nasledujúcich krokoch. ## Vytvorenie rozhrania rozšírenia Teraz vybudujeme komponenty používateľského rozhrania. Rozšírenie používa dvojité zobrazenie: konfiguračnú obrazovku pre počiatočné nastavenie a výsledkovú obrazovku pre zobrazenie dát. Toto nasleduje princíp postupného odhaľovania, ktorý sa používa v dizajne rozhraní od začiatkov počítačov – odhaľovať informácie a možnosti logicky, aby sa užívatelia nepreťažili. ### Prehľad pohľadov rozšírenia **Zobrazenie nastavenia** – Konfigurácia pre používateľov pri prvom použití:  **Zobrazenie výsledkov** – Zobrazenie údajov uhlíkovej stopy:  ### Vytvorenie konfiguračného formulára Nastavovací formulár zhromažďuje konfiguračné údaje používateľa počas prvého spustenia. Po nastavení tieto údaje zostaňú uložené v úložisku prehliadača pre budúce relácie. Do súboru `/dist/index.html` pridajte túto štruktúru formulára: ```html
``` **Čo tento formulár dosahuje:** - **Vytvára** sémantickú štruktúru formulára s vhodnými labelmi a asociáciami vstupov - **Povoľuje** automatické dopĺňanie prehliadačom pre lepší používateľský zážitok - **Vyžaduje** vyplnenie oboch polí pred odoslaním pomocou atribútu `required` - **Usporiadáva** vstupy pomocou popisných tried pre jednoduché štýlovanie a cielenie JavaScriptom - **Poskytuje** jasné pokyny používateľom, ktorí nastavia rozšírenie po prvý raz ### Vytvorenie zobrazenia výsledkov Ďalej vytvorte sekciu, ktorá bude zobrazovať údaje o uhlíkovej stope. Pridajte tento HTML pod formulár: ```htmlRegion:
Carbon Usage:
Fossil Fuel Percentage: