# Mradi wa Kiongezi cha Kivinjari Sehemu 1: Yote Kuhusu Vivinjari ```mermaid journey title Safari Yako ya Maendeleo ya Kiendelezi cha Kivinjari section Foundation Understand browsers: 3: Student Learn extension types: 4: Student Setup development: 4: Student section Development Build interface: 4: Student Add functionality: 5: Student Handle data: 5: Student section Integration Test in browser: 5: Student Debug issues: 4: Student Polish experience: 5: Student ```  > Sketchnote na [Wassim Chegham](https://dev.to/wassimchegham/ever-wondered-what-happens-when-you-type-in-a-url-in-an-address-bar-in-a-browser-3dob) ## Mtihani wa Kabla ya Mahadhara [Mtihani wa kabla ya mhadhara](https://ff-quizzes.netlify.app/web/quiz/23) ### Utangulizi Viendelezi vya kivinjari ni programu ndogo ndogo zinazoboresha uzoaji wako wa wavuti. Kama vile maono ya awali ya Tim Berners-Lee ya wavuti yenye mwingiliano, viendelezi huongeza uwezo wa kivinjari zaidi ya kutazama tu hati rahisi. Kuanzia wasimamizi wa nywila wanaohifadhi akaunti zako salama hadi wachukuaji wa rangi wanaosaidia wabunifu kuchukua vivuli kamili, viendelezi hutatua changamoto za kila siku za kuvinjari. Kabla ya tujenge kiendelezi chako cha kwanza, hebu tuelewe jinsi vivinjari vinavyofanya kazi. Kama Alexander Graham Bell alivyohitaji kuelewa usambazaji wa sauti kabla ya kugundua simu, kujua misingi ya kivinjari kutakusaidia kuunda viendelezi vinavyoelewana kwa urahisi na mifumo ya kivinjari iliyopo. Mwisho wa somo hili, utakuwa umeelewa usanifu wa kivinjari na kuanza kujenga kiendelezi chako cha kwanza. ```mermaid mindmap root((Kompyuta muundo wa kivinjari)) Core Components Rendering Engine JavaScript Engine Network Stack Storage APIs User Interface Address Bar Tab Management Bookmarks Extension Icons 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 ``` ## Kuelewa Vivinjari vya Wavuti Kivinjari cha wavuti ni kimsingi mfasiri wa hati kilichosindikwa kwa ustadi. Unapoandika "google.com" kwenye upau wa anuani, kivinjari hufanya mfululizo wa operesheni ngumu - kuomba maudhui kutoka kwa seva duniani kote, kisha kusoma na kuonyesha msimbo huo katika kurasa za wavuti zinazoshirikika unazoziona. Mchakato huu unaendana na jinsi kivinjari cha kwanza cha wavuti, WorldWideWeb, kilivyotengenezwa na Tim Berners-Lee mwaka 1990 ili kufanya hati zilizo na viungo zivukewe na watu wote. ✅ **Historia Kidogo**: Kivinjari cha kwanza kilikuwa kinaitwa 'WorldWideWeb' na kilifanywa na Sir Timothy Berners-Lee mwaka 1990.  > Baadhi ya vivinjari vya awali, kupitia [Karen McGrane](https://www.slideshare.net/KMcGrane/week-4-ixd-history-personal-computing) ### Jinsi Vivinjari Vinavyosindika Maudhui ya Wavuti Mchakato kati ya kuingiza URL na kuona ukurasa wa wavuti unahusisha hatua kadhaa za kuratibu zinazotokea ndani ya sekunde chache: ```mermaid sequenceDiagram participant User participant Browser participant Extension participant DNS participant Server User->>Browser: Andika URL na bonyeza Ingia Browser->>Extension: Chochea tukio la beforeRequest Extension->>Extension: Angalia kama URL inahitaji mabadiliko Browser->>DNS: Tafuta anwani ya IP ya seva DNS->>Browser: Rudisha anwani ya IP Browser->>Server: Ombi la maudhui ya ukurasa wa wavuti Server->>Browser: Tuma HTML, CSS, na JavaScript Browser->>Extension: Chochea tukio la beforeResponse Extension->>Extension: Badilisha maudhui ikiwa kuna hitaji Browser->>User: Onyesha ukurasa wa wavuti kamili Extension->>User: Onyesha masasisho ya UI ya ugani ``` **Hapa ni kile mchakato huu unachofanikisha:** - **Hubadilisha** URL inayosomwa na binadamu kuwa anwani ya IP ya seva kupitia utafutaji wa DNS - **Huanzisha** muunganisho salama na seva ya wavuti kwa kutumia itifaki za HTTP au HTTPS - **Huoomba** maudhui mahususi ya ukurasa wa wavuti kutoka kwa seva - **Hupokea** alama za HTML, mitindo ya CSS, na msimbo wa JavaScript kutoka kwa seva - **Huonyesha** maudhui yote kwenye ukurasa wa wavuti unaoshirikika unaoonekanwa ### Vipengele Vikuu vya Kivinjari Vivinjari vya kisasa vinatoa vipengele vingi ambavyo waendelezaji wa viendelezi wanaweza kutumia: | Kipengele | Kusudi | Fursa za Kiendelezi | |---------|---------|------------------------| | **Menginele wa Uonyesho** | Huuonyesha HTML, CSS, na JavaScript | Ubadilishaji wa maudhui, kuingiza mitindo | | **Menginele wa JavaScript** | Hutekeleza msimbo wa JavaScript | Skripti maalum, mwingiliano na API | | **Hifadhi ya Ndani** | Kuhifadhi data kwa ndani | Mapendeleo ya mtumiaji, data iliyohifadhiwa | | **Jumuiya ya Mtandao** | Kushughulikia maombi ya wavuti | Ufuatiliaji wa maombi, uchambuzi wa data | | **Mfumo wa Usalama** | Kulinda watumiaji dhidi ya maudhui ya hatari | Kichujio cha maudhui, maboresho ya usalama | **Kuelewa vipengele hivi kunakusaidia:** - **Tambua** mahali kiendelezi chako kinaweza kuongeza thamani zaidi - **Chagua** API sahihi za kivinjari kwa utendaji wa kiendelezi chako - **Buni** viendelezi vinavyofanya kazi kwa ufanisi na mifumo ya kivinjari - **Hakikisha** kiendelezi chako kinafuata mbinu bora za usalama wa kivinjari ### Mawazo Kuhusu Uundaji wa Viendelezi Kwa Vivinjari Tofauti Vivinjari tofauti hutekeleza viwango kwa tofauti ndogo ndogo, kama ilivyo kwa lugha tofauti za programu zinazoweza kushughulikia algorithimu hiyo hiyo kwa njia tofauti. Chrome, Firefox, na Safari kila moja ina sifa za kipekee ambazo waendelezaji wanapaswa kuzingatia wakati wa uundaji wa kiendelezi. > 💡 **Ushauri Mkuu**: Tumia [caniuse.com](https://www.caniuse.com) kuchunguza ni teknolojia gani za wavuti zinazoendeshwa kwenye vivinjari tofauti. Hii ni muhimu sana unapopanga vipengele vya kiendelezi chako! **Mambo yanayozingatiwa kwa uundaji wa viendelezi:** - **Jaribu** kiendelezi chako kwenye vivinjari vya Chrome, Firefox, na Edge - **Linganya** na API za viendelezi na muundo wa maelezo za vivinjari tofauti - **Shughulikia** sifa tofauti za ufanisi na vikwazo - **Toa** mbadala kwa vipengele maalum vya kivinjari ambavyo huenda havipatikani ✅ **Uchambuzi wa Takwimu**: Unaweza kubaini ni vivinjari gani watumiaji wako wanapendelea kwa kufunga vifurushi vya takwimu katika miradi yako ya maendeleo ya wavuti. Hii data inakusaidia kipaumbele ni vivinjari gani vya kuunga mkono kwanza. ## Kuelewa Viendelezi vya Kivinjari Viendelezi vya kivinjari hutatua changamoto za kawaida za kuvinjari kwa kuongeza utendaji moja kwa moja kwenye interface ya kivinjari. Badala ya kuhitaji programu tofauti au taratibu tata, viendelezi hutoa ufikiaji wa haraka kwa zana na vipengele. Dhana hii inaendana na namna waanzilishi wa kompyuta wa zamani kama Douglas Engelbart walivyoona kuongeza uwezo wa binadamu kwa teknolojia - viendelezi huimarisha utendaji wa msingi wa kivinjari chako. ```mermaid quadrantChart title Aina za Viongezi vya Vivinjari x-axis Rahisi --> Ngumu y-axis Matumizi Binafsi --> Vifaa vya Kitaalamu quadrant-1 Vifaa vya Waendelezaji quadrant-2 Suluhisho za Kampuni quadrant-3 Vifaa vya Binafsi quadrant-4 Programu za Uzalishaji 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] ``` **Makundi maarufu ya viendelezi na faida zao:** - **Zana za Ufanisi**: Wasimamizi wa kazi, programu za kuchukua maelezo, na waandishi wa muda wanaokusaidia kuwa na mpangilio - **Maboresho ya Usalama**: Wasimamizi wa nywila, vizuizi vya matangazo, na zana za faragha zinazolinda data yako - **Zana za Mwaendelezaji**: Waumbaji wa msimbo, wachukuaji rangi, na zana za urekebishaji zinazorahisisha maendeleo - **Maboresho ya Maudhui**: Modu za kusoma, vipakua video, na zana za picha zinaboresha uzoaji wako wa wavuti ✅ **Swali la Tafakari**: Ni viendelezi vipi vya kivinjari unavyopenda? Hufanya kazi gani maalum, na unaboreshaje uzoaji wako wa wavuti? ### 🔄 **Kukagua Kielelezo cha Mafunzo** **Kuelewa Usanifu wa Kivinjari**: Kabla ya kuhamia kwa uundaji wa kiendelezi, hakikisha unaweza: - ✅ Eleza jinsi vivinjari vinavyosindika maombi ya wavuti na kuonyesha maudhui - ✅ Tambua vipengele kuu vya usanifu wa kivinjari - ✅ Elewa jinsi viendelezi vinavyounganishwa na utendaji wa kivinjari - ✅ Tambua mfano wa usalama unaowalinda watumiaji **Jaribio la Haraka Lawe Mwendo**: Je, unaweza kufuatilia njia kutoka kuandika URL hadi kuona ukurasa wa wavuti? 1. **Utafutaji wa DNS** hubadilisha URL kuwa anwani ya IP 2. **Ombi la HTTP** hupata maudhui kutoka seva 3. **Uchambuzi** husindika HTML, CSS, na JavaScript 4. **Uonyesho** huuonyesha ukurasa wa mwisho 5. **Viendelezi** vinaweza kubadilisha maudhui katika hatua mbalimbali ## Kufunga na Kudhibiti Viendelezi Kuelewa mchakato wa usakinishaji wa kiendelezi hukusaidia kutarajia uzoaji wa mtumiaji wakati watu wanaposakinisha kiendelezi chako. Mchakato wa usakinishaji umeboreshwa kwa vivinjari vya kisasa, na tofauti ndogo ndogo katika muundo wa interface.  > **Muhimu**: Hakikisha umeamilisha mode ya mwendelezaji na kuruhusu viendelezi kutoka maduka mengine wakati unajaribu viendelezi vyako binafsi. ### Mchakato wa Usakinishaji wa Kiendelezi wa Maendeleo Unapokuwa ukitengeneza na kujaribu viendelezi vyako, fuata mtiririko huu: ```mermaid flowchart TD A[Andika Msimbo] --> B[Jenga Kiendelezi] B --> C{Usakinishaji wa Kwanza?} C -->|Ndiyo| D[Pakia Bila Kukunjwa] C -->|Hapana| E[Rejesha Kiendelezi] D --> F[Jaribu Ufanisi] E --> F F --> G{Inafanya Kazi Sawasawa?} G -->|Hapana| H[Tatua Masuala] G -->|Ndiyo| I[Tayari kwa Watumiaji] H --> A I --> J[Chapisha Duka] style A fill:#e1f5fe style F fill:#e8f5e8 style I fill:#f3e5f5 style J fill:#fff3e0 ``` ```bash # Hatua ya 1: Jenga kifungu chako cha kuongeza kazi npm run build ``` **Kile amri hii inachofanikisha:** - **Inakusanya** msimbo wako wa chanzo kuwa faili zinazoweza kutumiwa na kivinjari - **Inachanganya** moduli za JavaScript katika vifurushi vilivyobinafsishwa - **Inatengeneza** faili za mwisho za kiendelezi kwenye folda ya `/dist` - **Inatayarisha** kiendelezi chako kwa ajili ya usakinishaji na majaribio **Hatua ya 2: Nenda kwa Viendelezi vya Kivinjari** 1. **Fungua** ukurasa wa usimamizi wa viendelezi wa kivinjari chako 2. **Bofya** kitufe cha "Mipangilio na zaidi" (ikoni ya `...`) juu kulia 3. **Chagua** "Viendelezi" kwenye menyu inayoshuka **Hatua ya 3: Pakia Kiendelezi Chako** - **Kwa usakinishaji mpya**: Chagua `load unpacked` na chagua folda yako ya `/dist` - **Kwa masasisho**: Bofya `reload` karibu na kiendelezi kilichosakinishwa tayari - **Kwa majaribio**: Washa "Developer mode" ili kupata vipengele vya ziada vya urekebishaji makosa ### Usakinishaji wa Kiendelezi cha Uzalishaji > ✅ **Kumbuka**: Maelekezo haya ya maendeleo ni kwa viendelezi unavyoviunda mwenyewe. Kusakinisha viendelezi vilivyochapishwa, tembelea maduka rasmi ya viendelezi vya kivinjari kama [Microsoft Edge Add-ons store](https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home). **Kuelewa tofauti:** - **Usakinishaji wa maendeleo** hukuwezesha kujaribu viendelezi visivyohamasishwa wakati wa maendeleo - **Usakinishaji wa maduka** hutoa viendelezi vilivyoidhinishwa, vilivyochapishwa na masasisho ya moja kwa moja - **Sideloading** huruhusu usakinishaji wa viendelezi kutoka nje ya maduka rasmi (inahitaji mode ya mwendelezaji) ## Kujenga Kiendelezi Chako cha Athari ya Kaboni Tutaunda kiendelezi cha kivinjari kinachoonyesha athari ya kaboni ya matumizi ya nishati ya eneo lako. Mradi huu unaonyesha dhana za msingi za uundaji wa viendelezi wakati unaunda zana yenye maana ya uelewa wa mazingira. Njia hii inafuata kanuni ya "kujifunza kwa kufanya" ambayo imeonyesha ufanisi tangu nadharia za elimu za John Dewey - kuchanganya ujuzi wa kiufundi na matumizi halisi ya maisha. ### Mahitaji ya Mradi Kabla ya kuanza maendeleo, hebu tukusanye rasilimali na utegemezi unaohitajika: **Ufikiaji wa API Unahitajika:** - **[API ya CO2 Signal key](https://www.co2signal.com/)**: Ingiza anuani yako ya barua pepe kupokea kiapi chako cha bure - **[Msimbo wa Mkoa](http://api.electricitymap.org/v3/zones)**: Tafuta msimbo wa mkoa wako kwa kutumia [Electricity Map](https://www.electricitymap.org/map) (kwa mfano, Boston hutumia 'US-NEISO') **Zana za Maendeleo:** - **[Node.js na NPM](https://www.npmjs.com)**: Zana za usimamizi wa vifurushi kwa kusakinisha utegemezi wa mradi - **[Msimbo wa kuanzia](../../../../5-browser-extension/start)**: Pakua folda `start` kuanza maendeleo ✅ **Jifunze Zaidi**: Boresha ujuzi wako wa usimamizi wa vifurushi kwa kutumia [moduli kamili ya Kujifunza](https://docs.microsoft.com/learn/modules/create-nodejs-project-dependencies/?WT.mc_id=academic-77807-sagibbon) ### Kuelewa Muundo wa Mradi Kuelewa muundo wa mradi kunasaidia kupanga kazi za maendeleo kwa ufanisi. Kama vile Maktaba ya Alexandria ilivyopangwa kwa urahisi wa upatikanaji maarifa, msingi wa msimbo ulio pangiliwa vizuri hufanya maendeleo kuwa rahisi: ``` 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 ``` **Kuvunja kile kila faili hufanikisha:** - **`manifest.json`**: **Hufafanua** metadata ya kiendelezi, ruhusa, na njia za kuingia - **`index.html`**: **Hutengeneza** interface ya mtumiaji inayoonekana wakati watumiaji wanabofya kiendelezi chako - **`background.js`**: **Hushughulikia** kazi za nyuma na wasikilizaji wa matukio ya kivinjari - **`main.js`**: **Inayo** msimbo wa mwisho wa JavaScript baada ya mchakato wa kujenga - **`src/index.js`**: **Nyumba** ya msimbo wako mkuu wa maendeleo unaokusanywa katika `main.js` > 💡 **Ushauri wa Mpangilio**: Hifadhi kitufe chako cha API na msimbo wa mkoa katika noti salama kwa urahisi wa marejeleo wakati wa maendeleo. Utahitaji thamani hizi kujaribu utendaji wa kiendelezi chako. ✅ **Kumbuka Usalama**: Kamwe usiweka taarifa za API au nyaraka nyeti kwenye hifadhi yako ya msimbo. Tutakuonyesha jinsi ya kuzisimamia kwa usalama katika hatua zinazofuata. ## Kuunda Interface ya Kiendelezi Sasa tutajenga vipengele vya interface ya mtumiaji. Kiendelezi kinatumia njia ya skrini mbili: skrini ya usanidi kwa usanidi wa awali na skrini ya matokeo kwa maonyesho ya data. Hii inafuata kanuni ya kufunua hatua kwa hatua inayotumika katika ubunifu wa interface tangu enzi za kwanza za kompyuta - kufunua taarifa na chaguzi mfululizo kwa mantiki ili kuepuka kuzidi mtumiaji. ### Muhtasari wa Maoni ya Kiendelezi **Muonekano wa Usanidi** - usanidi kwa mtumiaji mara ya kwanza:  **Muonekano wa Matokeo** - maonyesho ya data ya athari ya kaboni:  ### Kujenga Fomu ya Usanidi Fomu ya usanidi hukusanya data ya usanidi wa mtumiaji wakati wa matumizi ya kwanza. Baada ya kusanidiwa, taarifa hii huhifadhiwa kwenye hifadhi ya kivinjari kwa vipindi vijavyo. Katika faili `/dist/index.html`, ongeza muundo huu wa fomu: ```html
``` **Hii fomu inafanya yafuatayo:** - **Inaunda** muundo wa fomu wa maana na lebo na ushirikiano sahihi wa pembejeo - **Inawezesha** kazi ya kujaza kiotomatiki ya kivinjari kwa uzoaji bora wa mtumiaji - **Inahitaji** sehemu zote mbili kujazwa kabla ya kuwasilisha kwa kutumia sifa ya `required` - **Inapanga** pembejeo kwa majina ya darasa yaliyoelezea kwa urahisi wa mtindo na kulenga JavaScript - **Inatoa** maelekezo wazi kwa watumiaji wanaounda kiendelezi kwa mara ya kwanza ### Kujenga Onyesho la Matokeo Ifuatayo, tengeneza eneo la matokeo litakaloonyesha data ya athari ya kaboni. Ongeza HTML hii chini ya fomu: ```htmlRegion:
Carbon Usage:
Fossil Fuel Percentage: