# Jenga Programu ya Benki Sehemu ya 1: Violezo vya HTML na Njia katika Programu ya Mtandao ```mermaid journey title Safari Yako ya Maendeleo ya App ya Benki section Misingi ya SPA Elewa apps za ukurasa mmoja: 3: Student Jifunze dhana za templeti: 4: Student Fuzu udhibiti wa DOM: 4: Student section Mifumo ya Routing Tekeleza routing upande wa mteja: 4: Student Dhibiti historia ya kivinjari: 5: Student Unda mifumo ya urambazaji: 5: Student section Mifumo ya Kitaalamu Jenga usanifu wa moduli: 5: Student Tumia mbinu bora: 5: Student Unda uzoefu wa mtumiaji: 5: Student ``` Wakati kompyuta ya uongozi ya Apollo 11 ilipoelekeza kwenda mwezi mwaka 1969, ilikuwa inabidi kubadilisha kati ya programu tofauti bila kuanzisha tena mfumo mzima. Programu za wavuti za kisasa hufanya kazi kwa njia sawa – hubadilisha unachokiona bila kupakia tena kila kitu kuanzia mwanzo. Hii huunda uzoefu laini na unaojibu haraka unaotarajiwa na watumiaji leo. Tofauti na tovuti za jadi ambazo hupakia kurasa nzima kwa kila mwingiliano, programu za wavuti za kisasa huboresha sehemu tu zinazohitaji kubadilishwa. Njia hii, kama vile ikolojia ya misheni hubadilisha kati ya maonyesho tofauti huku ikidumisha mawasiliano thabiti, huunda uzoefu huo laini ambao tumekuwa tukitarajia. Hii ndiyo kinachofanya tofauti iwe kubwa: | Programu za Kurasa Nyingi za Kiasili | Programu za Ukurasa Mmoja za Kisasa | |-------------------------------------|-------------------------------------| | **Uelekezaji** | Kupakia tena kurasa nzima kwa kila skrini | Kubadilisha maudhui papo hapo | | **Utendaji** | Polepole kutokana na upakuaji kamili wa HTML | Haraka kwa masasisho sehemu fulani | | **Uzoefu wa Mtumiaji** | Mwangaza wa kurasa unaosumbua | Mabadiliko laini, kama app | | **Kushirikiana Data** | Gumu kati ya kurasa | Usimamizi rahisi wa hali | | **Maendeleo** | Faili nyingi za HTML za kudumisha | HTML moja yenye violezo vya mabadiliko | **Kuelewa mageuzi:** - **Programu za jadi** zinahitaji maombi ya seva kwa kila hatua ya uelekezaji - **SPA za kisasa** hupakia mara moja na huboresha maudhui kwa JavaScript - **Matakwa ya watumiaji** sasa yanapendelea mwingiliano wa papo hapo na usio na katikati - **Faida za utendaji** ni pamoja na kupunguza upendeleo na majibu ya haraka Katika somo hili, tutajenga programu ya benki yenye skrini nyingi zinazofuatana kwa usawa. Kama vile wanasayansi wanavyotumia vifaa vya moduli vinavyoweza kubadilishwa kwa majaribio tofauti, tutatumia violezo vya HTML kama vipengele vinavyoweza kutumika tena vinavyoweza kuonyeshwa inapobidi. Utashughulikia violezo vya HTML (ramani za matumizi tena kwa skrini tofauti), njia za JavaScript (mfumo unaobadilisha kati ya skrini), na API ya historia ya kivinjari (inayo dhamini kitufe cha nyuma kinavyofanya kazi kama ilivyo tarajiwa). Hizi ni mbinu za msingi zinazotumiwa na fremu kama React, Vue, na Angular. Mwisho wa somo, utakuwa na programu ya benki inayofanya kazi inayoonyesha kanuni za kitaalamu za programu moja ya ukurasa. ```mermaid mindmap root((Single-Page Applications)) Architecture Template System Client-side Routing State Management Event Handling Templates Reusable Components Dynamic Content DOM Manipulation Content Switching Routing URL Management History API Navigation Logic Browser Integration User Experience Haraka Kuendesha Mabadiliko Laini Hali Imara Mwingiliano wa Kisasa Performance Kupunguza Maombi kwa Server Mabadiliko ya Ukurasa Haraka Matumizi Bora ya Rasilimali Uwezo wa Kujibu Bora ``` ## Mtihani wa Kabla ya Mihadhara [Mtihani wa kabla ya mihadhara](https://ff-quizzes.netlify.app/web/quiz/41) ### Unachohitaji Tutahitaji seva ya wavuti ya ndani kujaribu programu yetu ya benki – usijali, ni rahisi zaidi kuliko inavyosikika! Ikiwa bado hujajiandaa, ingiza [Node.js](https://nodejs.org) na endesha `npx lite-server` kutoka kwenye folda ya mradi wako. Amri hii rahisi huanzisha seva ya ndani na kufungua programu yako moja kwa moja kwenye kivinjari. ### Maandalizi Kwenye kompyuta yako, tengeneza folda iitwayo `bank` yenye faili iitwayo `index.html` ndani yake. Tutaanza na boilerplate hii ya HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Hivi ndivyo boilerplate hii inavyotoa:** - **Inaweka** muundo wa hati ya HTML5 na tangazo sahihi la DOCTYPE - **Inapanga** usimbaji wa herufi kama UTF-8 kwa msaada wa maandishi ya kimataifa - **Inawezesha** usanifu unaojibika kwa kutumia tagi ya meta ya viewport kwa ufanisi wa simu - **Inaweka** kichwa cha maelezo kinachoonekana kwenye kichupo cha kivinjari - **Inaunda** sehemu safi ya mwili ambapo tutajenga programu yetu > πŸ“ **Muhtasari wa Muundo wa Mradi** > > **Mwisho wa somo hili, mradi wako uta kuwa na:** > ``` > bank/ > β”œβ”€β”€ index.html > β”œβ”€β”€ app.js > └── style.css > ``` > > **Majukumu ya faili:** > - **index.html**: Ina violezo vyote na hutoa muundo wa programu > - **app.js**: Inasimamia njia, uelekezaji, na usimamizi wa violezo > - **Templates**: Hufafanua mtazamo wa kuingia, dashibodi, na skrini nyingine --- ## Violezo vya HTML Violezo hutatua tatizo msingi katika maendeleo ya wavuti. Wakati Gutenberg alibuni uchapishaji wa aina inayoelea miaka ya 1440, alitambua kuwa badala ya kuchonga kurasa zote, anaweza kutengeneza vitalu vya herufi vya matumizi tena na kwa kupanga kama inavyotakiwa. Violezo vya HTML hufanya kazi kwa kanuni sawa – badala ya kutengeneza faili za HTML tofauti kwa kila skrini, unafafanua miundo inayoweza kutumika tena inayoweza kuonyeshwa inapobidi. ```mermaid flowchart TD A["πŸ“‹ Ufafanuzi wa Kiolezo"] --> B["πŸ’¬ Fichwa katika DOM"] B --> C["πŸ” JavaScript Inatafuta Kiolezo"] C --> D["πŸ“‹ Nakili Yaliyomo ya Kiolezo"] D --> E["πŸ”— Ambatanisha kwenye DOM Inayoonekana"] E --> F["πŸ‘οΈ Mtumiaji Anaona Yaliyomo"] G["Kiolezo cha Kuingia"] --> A H["Kiolezo cha Dashibodi"] --> A I["Violezo vya Baadaye"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Fikiria violezo kama ramani za matumizi kwa sehemu tofauti za programu yako. Kama vile mbunifu anavyotengeneza ramani moja na kuitumia mara kadhaa badala ya kuchora vyumba visivyo tofauti, sisi tunaunda violezo mara moja na kuvitumia inapobidi. Kivinjari huweka violezo hivi visivyoonekana hadi JavaScript ianze kuvitumia. Ikiwa unataka kutengeneza skrini nyingi kwa ukurasa wa wavuti, suluhisho moja litakuwa kutengeneza faili moja ya HTML kwa kila skrini unayotaka kuonyesha. Hata hivyo, suluhisho hili lina usumbufu kadhaa: - Unapaswa kupakia tena HTML nzima unapotumia kubadilisha skrini, jambo ambalo linaweza kuwa polepole. - Ni vigumu kushirikiana data kati ya skrini tofauti. Njia nyingine ni kuwa na faili moja tu ya HTML, na kufafanua violezo vingi vya [HTML templates](https://developer.mozilla.org/docs/Web/HTML/Element/template) kwa kutumia kipengele cha `