# Böngésző bővítmény projekt 1. rész: Minden a böngészőkről ```mermaid journey title A böngészőbővítmény-fejlesztési utad section Alapok Understand browsers: 3: Student Learn extension types: 4: Student Setup development: 4: Student section Fejlesztés Build interface: 4: Student Add functionality: 5: Student Handle data: 5: Student section Integráció Test in browser: 5: Student Debug issues: 4: Student Polish experience: 5: Student ```  > Vázlatjegyzet készítője: [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Előadás előtti kvíz [Előadás előtti kvíz](https://ff-quizzes.netlify.app/web/quiz/23) ### Bevezetés A böngészőbővítmények mini alkalmazások, amelyek fokozzák a webes böngészési élményt. Ahogy Tim Berners-Lee eredeti interaktív webes víziója is hangsúlyozta, a bővítmények a böngésző képességeit egyszerű dokumentummegjelenítésen túl bővítik. A jelszókezelőktől, amelyek védenek fiókjaidat, a színválasztókig, amelyek segítik a tervezőket tökéletes árnyalatok kiválasztásában, a bővítmények a mindennapi böngészési kihívásokra adnak megoldást. Mielőtt elkészítenénk az első bővítményedet, ismerjük meg, hogyan működnek a böngészők. Ahogyan Alexander Graham Bellnek is értenie kellett a hangátvitelt a telefon feltalálása előtt, a böngészők alapjainak ismerete segít abban, hogy olyan bővítményeket hozz létre, amelyek zökkenőmentesen integrálódnak a meglévő böngészőrendszerekhez. A lecke végére megérted a böngészőarchitektúrát, és elkezded megépíteni első bővítményedet. ```mermaid mindmap root((Böngésző felépítése)) Core Components Rendering Engine JavaScript Engine Network Stack Storage APIs User Interface Cím sáv Fülekezelés Könyvjelzők Bővítmény ikonok Extension System Manifest fájlok Tartalom szkriptek Háttéroldalak Felugró ablakok Security Model Ugyanazon eredet politikája Jogosultságok API Tartalombiztonság Izolált világok Development Tools DevTools integráció Hibakereső konzol Teljesítményfigyelő Bővítmény vizsgáló ``` ## A webes böngészők megértése Egy webes böngésző lényegében egy kifinomult dokumentumértelmező. Amikor beírod, hogy "google.com" a címsorba, a böngésző bonyolult műveletsorozatot hajt végre – a világ minden táján lévő szerverekről tartalmat kér le, majd azt elemzi és megjeleníti az általa látott interaktív weboldalakká. Ez a folyamat tükrözi azt, ahogyan az első webes böngészőt, a WorldWideWeb-et Tim Berners-Lee 1990-ben megtervezte, hogy a hiperhivatkozott dokumentumok mindenki számára elérhetőek legyenek. ✅ **Egy kis történelem**: Az első böngészőt 'WorldWideWeb'-nek hívták, és Sir Timothy Berners-Lee készítette 1990-ben.  > Néhány korai böngésző, forrás: [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) ### Hogyan dolgozza fel a böngésző a webes tartalmat A URL beírása és a weboldal megjelenése között több összehangolt lépés zajlik le pár másodperc alatt: ```mermaid sequenceDiagram participant User participant Browser participant Extension participant DNS participant Server User->>Browser: Beírja az URL-t és megnyomja az Entert Browser->>Extension: beforeRequest esemény kiváltása Extension->>Extension: Ellenőrizze, szükséges-e az URL módosítása Browser->>DNS: Kiszámolja a szerver IP-címét DNS->>Browser: Visszaadja az IP-címet Browser->>Server: Kéri a weboldal tartalmát Server->>Browser: HTML, CSS és JavaScript küldése Browser->>Extension: beforeResponse esemény kiváltása Extension->>Extension: Szöveg módosítása, ha szükséges Browser->>User: Megjeleníti a teljes weboldalt Extension->>User: Kiterjesztés UI frissítéseinek megjelenítése ``` **Ez a folyamat a következőket hajtja végre:** - **Lefordítja** az ember által olvasható URL-t szerver IP címre DNS lekérdezéssel - **Létrehoz** biztonságos kapcsolatot a webkiszolgálóval HTTP vagy HTTPS protokollon keresztül - **Kéri** az adott weboldal tartalmát a szervertől - **Fogadja** az HTML jelölést, CSS stílusokat és JavaScript kódot a szervertől - **Megjeleníti** az összes tartalmat az interaktív weboldalon, amit látsz ### Böngésző alapvető funkciói A modern böngészők sok funkciót kínálnak, amelyeket a bővítményfejlesztők kihasználhatnak: | Funkció | Cél | Lehetőségek a bővítmények számára | |---------|---------|------------------------| | **Megjelenítő motor** | HTML, CSS és JavaScript megjelenítése | Tartalom módosítás, stílusinjekció | | **JavaScript motor** | JavaScript kód végrehajtása | Egyedi szkriptek, API interakciók | | **Helyi tároló** | Adatok helyi mentése | Felhasználói beállítások, gyorsítótárazott adatok | | **Hálózati réteg** | Webes lekérések kezelése | Lekérés figyelés, adat elemzés | | **Biztonsági modell** | Felhasználók védelme rosszindulatú tartalom ellen | Tartalomszűrés, biztonsági fejlesztések | **E funkciók ismerete segít abban, hogy:** - **Beazonosítsd**, hol adhat hozzá leginkább értéket a bővítményed - **Megválaszd** a megfelelő böngésző API-kat a bővítmény funkcióihoz - **Tervezd** azokat a bővítményeket, amelyek hatékonyan működnek a böngésző rendszereivel - **Biztosítsd**, hogy bővítményed megfeleljen a böngésző biztonsági legjobb gyakorlatainak ### Több böngészőt támogató fejlesztési szempontok A különböző böngészők kissé eltérő módon valósítják meg a szabványokat, hasonlóan ahhoz, ahogy különböző programozási nyelvek is eltérően kezelhetnek egy algoritmust. A Chrome, Firefox és Safari mind egyedi jellemzőkkel bír, amelyeket a fejlesztőknek figyelembe kell venniük bővítményfejlesztés során. > 💡 **Pro Tipp**: Használd a [caniuse.com](https://www.caniuse.com) oldalt, hogy ellenőrizd, mely webes technológiák támogatottak a különböző böngészőkben. Ez felbecsülhetetlen segítség a bővítmény funkcióinak tervezésekor! **Fontos szempontok a bővítményfejlesztéshez:** - **Teszteld** bővítményedet Chrome, Firefox és Edge böngészőkön - **Alkalmazkodj** a különböző böngésző bővítmény API-khoz és manifest formátumokhoz - **Kezeld** a különböző teljesítményjellemzőket és korlátokat - **Biztosíts** tartalék megoldásokat azokra a böngészőspecifikus funkciókra, amelyek esetleg nem elérhetőek minden böngészőben ✅ **Elemzési betekintés**: Megtudhatod, hogy mely böngészőket preferálják a felhasználóid, ha a webfejlesztési projektjeidbe analytics csomagokat telepítesz. Ezek az adatok segítenek, hogy a támogatott böngészőket fontossági sorrendbe állítsd. ## A böngészőbővítmények megértése A böngészőbővítmények megoldják a gyakori webes böngészési problémákat azáltal, hogy funkciókat adnak hozzá közvetlenül a böngésző felületéhez. Nem igényelnek külön alkalmazásokat vagy bonyolult munkafolyamatokat, a bővítmények azonnali hozzáférést biztosítanak eszközökhöz és funkciókhoz. Ez a koncepció tükrözi azt, ahogyan a korai számítástechnikai úttörők, például Douglas Engelbart elképzelték az emberi képességek technológiával való kiterjesztését – a bővítmények kiterjesztik a böngésződ alapfunkcionalitását. ```mermaid quadrantChart title Böngésző Bővítmény Kategóriák x-axis Egyszerű --> Összetett y-axis Személyes Használat --> Professzionális Eszközök quadrant-1 Fejlesztői Eszközök quadrant-2 Vállalati Megoldások quadrant-3 Személyes Segédeszközök quadrant-4 Termelékenységi Alkalmazások 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] ``` **Népszerű bővítménykategóriák és előnyeik:** - **Hatékonyságot növelő eszközök**: Feladatkezelők, jegyzetelő appok és időmérők, amelyek segítenek szervezettebbnek maradni - **Biztonsági fejlesztések**: Jelszókezelők, reklámblokkolók és adatvédelmi eszközök, amelyek védik az adataidat - **Fejlesztői eszközök**: Kódfomázók, színválasztók és hibakereső segédprogramok, amelyek gyorsítják a fejlesztést - **Tartalomfejlesztés**: Olvasási módok, videóletöltők és képernyőkép eszközök, amelyek javítják a webböngészési élményt ✅ **Reflektáló kérdés**: Mik a kedvenc böngészőbővítményeid? Milyen konkrét feladatokat látnak el, és hogyan javítják a böngészési élményt? ### 🔄 **Pedagógiai átnézés** **Böngésző architektúra megértése**: Mielőtt a bővítményfejlesztésre térnénk, győződj meg róla, hogy: - ✅ El tudod magyarázni, hogyan dolgozzák fel a böngészők a webes kéréseket és jelenítenek meg tartalmat - ✅ Fel tudod sorolni a böngészőarchitektúra fő összetevőit - ✅ Érted, hogyan integrálódnak a bővítmények a böngésző funkcióiba - ✅ Felismered a felhasználókat védő biztonsági modellt **Gyors önellenőrzés**: Ki tudod követni a folyamatot az URL beírásától a weboldal megjelenéséig? 1. **DNS lekérdezés** az URL IP-címmé alakításához 2. **HTTP kérés** tartalom lekérésére a szervertől 3. **Elemzés** HTML, CSS és JavaScript feldolgozásával 4. **Megjelenítés** a végső weboldal megmutatása 5. **Bővítmények** több ponton módosíthatják a tartalmat ## Bővítmények telepítése és kezelése A bővítmény telepítési folyamatának ismerete segít előre látni a felhasználói élményt, amikor a felhasználók telepítik a bővítményedet. A telepítési folyamat egységes a modern böngészőkben, kisebb felületbeli különbségekkel.  > **Fontos**: Győződj meg róla, hogy bekapcsoltad a fejlesztői módot és engedélyezted a más áruházból származó bővítményeket, amikor saját bővítményeidet teszteled. ### Bővítmény fejlesztés és telepítés lépései Amikor saját bővítményeket fejlesztesz és tesztelsz, kövesd ezt a munkafolyamatot: ```mermaid flowchart TD A[Kód írása] --> B[Bővítmény építése] B --> C{Első telepítés?} C -->|Igen| D[Csomagolatlan betöltése] C -->|Nem| E[Bővítmény újratöltése] D --> F[Funkcionalitás tesztelése] E --> F F --> G{Helyesen működik?} G -->|Nem| H[Hibakeresés] G -->|Igen| I[Felhasználók számára kész] H --> A I --> J[Publikálás a boltba] style A fill:#e1f5fe style F fill:#e8f5e8 style I fill:#f3e5f5 style J fill:#fff3e0 ``` ```bash # 1. lépés: Építse meg a bővítményét npm run build ``` **Mit hajt végre ez a parancs:** - **Lefordítja** a forráskódot böngésző számára kész fájlokká - **Csomagolja** a JavaScript modulokat optimalizált csomagokká - **Előállítja** a végső bővítményfájlokat a `/dist` mappában - **Előkészíti** bővítményed telepítésre és tesztelésre **2. lépés: Nyisd meg a böngésző bővítménykezelő oldalát** 1. **Nyisd meg** a böngésződ bővítménykezelő oldalát 2. **Kattints** a jobb felső sarokban a „Beállítások és egyéb” (a `...` ikonra) 3. **Válaszd** ki a „Bővítmények” menüpontot **3. lépés: Töltsd be a bővítményedet** - **Új telepítéshez**: Válaszd a `csomagolatlan betöltése` lehetőséget, majd válaszd ki a `/dist` mappát - **Frissítéshez**: Kattints a `újratöltés` gombra a már telepített kiegészítő mellett - **Teszteléshez**: Kapcsold be a „Fejlesztői mód”-ot, hogy hozzáférj további hibakeresési funkciókhoz ### Bővítmény telepítése éles környezetben > ✅ **Megjegyzés**: Ezek a fejlesztői utasítások kizárólag az általad készített bővítményekre vonatkoznak. A közzétett bővítmények telepítéséhez látogass el az olyan hivatalos bővítményáruházakba, mint a [Microsoft Edge bővítmény áruház](https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home). **A különbségek megértése:** - **Fejlesztői telepítések** lehetővé teszik, hogy a fejlesztés alatt álló, még nem közzétett bővítményeket teszteld - **Áruházi telepítések** jóváhagyott, publikált bővítményeket biztosítanak automatikus frissítésekkel - **Oldalról való telepítés** lehetővé teszi bővítmények telepítését az áruházakon kívülről (fejlesztői mód szükséges) ## Szénlábnyom bővítmény készítése Egy böngészőbővítményt készítünk, amely megmutatja az adott régió energiafelhasználásának szénlábnyomát. Ez a projekt alapvető bővítményfejlesztési fogalmakat szemléltet, miközben egy gyakorlati környezeti tudatosságot segítő eszközt hoz létre. Ez az „elsajátítás a gyakorlatban” elv szerint halad, amely John Dewey neveléselméleti elvei óta bizonyítottan hatékony – a technikai készségek és a valódi életből vett hasznos alkalmazások kombinációját alkalmazza. ### Projekt követelmények A fejlesztés megkezdése előtt gyűjtsük össze a szükséges erőforrásokat és függőségeket: **Szükséges API hozzáférés:** - **[CO2 Signal API kulcs](https://www.co2signal.com/)**: Add meg az email címed a ingyenes API kulcsért - **[Régiókód](http://api.electricitymap.org/v3/zones)**: Keresd meg a régiókódod az [Electricity Map](https://www.electricitymap.org/map) segítségével (például Bostonhoz az 'US-NEISO' tartozik) **Fejlesztői eszközök:** - **[Node.js és NPM](https://www.npmjs.com)**: Csomagkezelő eszköz a projektfüggőségek telepítéséhez - **[Kezdőkód](../../../../5-browser-extension/start)**: Töltsd le a `start` mappát a fejlesztés megkezdéséhez ✅ **Tanulj többet**: Fejleszd csomagkezelési készségeidet ezzel a [átfogó Learn modullal](https://docs.microsoft.com/learn/modules/create-nodejs-project-dependencies/?WT.mc_id=academic-77807-sagibbon) ### A projekt struktúrájának megértése A projekt struktúrájának ismerete segít a fejlesztési munka hatékony szervezésében. Ahogy az alexandriai könyvtárat rendezték az egyszerű tudáskeresés érdekében, úgy egy jól strukturált kódbázis is gyorsítja a fejlesztést: ``` 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 ``` **Mit tesz lehetővé az egyes fájl:** - **`manifest.json`**: Meghatározza a bővítmény metaadatait, engedélyeit és belépési pontjait - **`index.html`**: Létrehozza a felhasználói felületet, amely akkor jelenik meg, amikor a felhasználó a bővítményre kattint - **`background.js`**: Kezeli a háttérfeladatokat és a böngésző eseményfigyelőit - **`main.js`**: Tartalmazza az építési folyamat után létrejövő végső JavaScript kódot - **`src/index.js`**: Tartalmazza a fő fejlesztői kódot, amelyből a `main.js` készül > 💡 **Szervezési tipp**: Tárold biztonságos jegyzetben az API kulcsodat és a régiókódodat, hogy könnyen elérhető legyen a fejlesztés során. Ezekre az értékekre szükséged lesz a bővítmény funkcióinak teszteléséhez. ✅ **Biztonsági megjegyzés**: Soha ne töltsd fel API kulcsaidat vagy érzékeny hitelesítő adatokat a kódtáradba. A következő lépésekben megmutatjuk, hogyan kezeld ezeket biztonságosan. ## A bővítmény felületének létrehozása Most építsük meg a felhasználói felület komponenseit. A bővítmény két képernyős megközelítést használ: egy konfigurációs képernyőt az alapbeállításokhoz és egy eredményképernyőt az adatok megjelenítéséhez. Ez a fokozatos információfeltárás elve, amit az interfésztervezés már a számítástechnika korai napjaiban is alkalmaztak – az információkat logikus sorrendben mutatja, hogy ne terhelje túl a felhasználókat. ### Bővítmény nézetek áttekintése **Beállítási nézet** – Első alkalommal használók konfigurációja:  **Eredmény nézet** – Szénlábnyom adat megjelenítése:  ### A konfigurációs űrlap építése Az űrlap begyűjti a felhasználó konfigurációs adatait az első használatkor. A beállítások a böngésző tárolójában megmaradnak a későbbi használatra. A `/dist/index.html` fájlban add hozzá ezt az űrlapszerkezetet: ```html
``` **Ez az űrlap a következőket teszi lehetővé:** - **Létrehoz** egy szemantikus űrlapszerkezetet megfelelő feliratokkal és bemeneti kapcsolódásokkal - **Lehetővé teszi** a böngésző automatikus kitöltési funkcióját a jobb felhasználói élményért - **Követeli**, hogy mindkét mező ki legyen töltve a `required` attribútum használatával - **Rendszerezi** a mezőket leíró osztálynevekkel a könnyebb stílusozás és JavaScript célozhatóság érdekében - **Egyértelmű utasításokat** ad azoknak a felhasználóknak, akik először állítják be a bővítményt ### Az eredmények megjelenítése Ezután hozd létre az eredményt megjelenítő területet, amely megmutatja a szénlábnyom adatokat. Add hozzá ezt az HTML-t az űrlap alá: ```htmlRegion:
Carbon Usage:
Fossil Fuel Percentage: