# Gumawa ng Banking App Bahagi 1: HTML Templates at Routes sa isang Web App ```mermaid journey title Your Banking App Development Journey section SPA Fundamentals Understand single-page apps: 3: Student Learn template concepts: 4: Student Master DOM manipulation: 4: Student section Routing Systems Implement client-side routing: 4: Student Handle browser history: 5: Student Create navigation systems: 5: Student section Professional Patterns Build modular architecture: 5: Student Apply best practices: 5: Student Create user experiences: 5: Student ``` Noong ginabayan ng Apollo 11 ang computer nito papunta sa buwan noong 1969, kailangan nitong magpalit-palit ng iba't ibang programa nang hindi nire-restart ang buong sistema. Ganito rin ang modernong web applications – binabago ang nakikita mo nang hindi nire-reload ang lahat mula sa simula. Ito ang nagbibigay ng smooth at responsive na karanasan na inaasahan ng mga user ngayon. Hindi tulad ng tradisyunal na mga website na nire-reload ang buong pahina sa bawat interaksyon, ang modernong web apps ay ina-update lamang ang mga bahagi na kailangang baguhin. Ang ganitong paraan, katulad ng kung paano nagbabago ang mga display sa mission control habang patuloy ang komunikasyon, ang nagbibigay ng fluid na karanasan na inaasahan natin. Narito ang mga dahilan kung bakit napakalaki ng pagkakaiba: | Tradisyunal na Multi-Page Apps | Modernong Single-Page Apps | |----------------------------|-------------------------| | **Navigation** | Buong page reload sa bawat screen | Instant na pagpapalit ng content | | **Performance** | Mas mabagal dahil sa kumpletong pag-download ng HTML | Mas mabilis gamit ang partial updates | | **User Experience** | Biglaang pag-flash ng page | Smooth, parang app na transitions | | **Data Sharing** | Mahirap sa pagitan ng mga pahina | Madaling state management | | **Development** | Maraming HTML files na kailangang i-maintain | Isang HTML na may dynamic templates | **Pag-unawa sa ebolusyon:** - **Tradisyunal na apps** nangangailangan ng server requests sa bawat navigation action - **Modernong SPAs** isang beses lang mag-load at ina-update ang content dynamically gamit ang JavaScript - **User expectations** mas gusto ang instant at seamless na interaksyon - **Performance benefits** mas kaunting bandwidth at mas mabilis na response Sa leksyong ito, gagawa tayo ng banking app na may maraming screen na seamless ang daloy. Katulad ng mga siyentipiko na gumagamit ng modular na instrumento na maaaring i-reconfigure para sa iba't ibang eksperimento, gagamit tayo ng HTML templates bilang reusable components na maaaring ipakita kung kinakailangan. Magtratrabaho ka gamit ang HTML templates (mga reusable na blueprint para sa iba't ibang screen), JavaScript routing (ang sistema na nagpapalit-palit ng screen), at ang browser's history API (na nagpapanatili ng functionality ng back button). Ang mga ito ay parehong fundamental techniques na ginagamit ng mga framework tulad ng React, Vue, at Angular. Sa dulo, magkakaroon ka ng gumaganang banking app na nagpapakita ng mga prinsipyo ng propesyonal na single-page application. ```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 Fast Navigation Smooth Transitions Consistent State Modern Interactions Performance Reduced Server Requests Faster Page Transitions Efficient Resource Usage Better Responsiveness ``` ## Pre-Lecture Quiz [Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/41) ### Mga Kailangan Mo Kailangan natin ng lokal na web server para ma-test ang banking app natin – huwag mag-alala, madali lang ito! Kung wala ka pang naka-set up, mag-install lang ng [Node.js](https://nodejs.org) at i-run ang `npx lite-server` mula sa project folder mo. Ang handy na command na ito ay magbubukas ng lokal na server at awtomatikong bubuksan ang app mo sa browser. ### Paghahanda Sa iyong computer, gumawa ng folder na pinangalanang `bank` na may file na `index.html` sa loob nito. Magsisimula tayo mula sa HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code): ```html Bank App ``` **Narito ang ibinibigay ng boilerplate na ito:** - **Itinatag** ang HTML5 document structure na may tamang DOCTYPE declaration - **Kinonfigure** ang character encoding bilang UTF-8 para sa international text support - **Pinagana** ang responsive design gamit ang viewport meta tag para sa mobile compatibility - **Nag-set** ng descriptive title na lumalabas sa browser tab - **Gumawa** ng malinis na body section kung saan natin itatayo ang application > πŸ“ **Preview ng Project Structure** > > **Sa dulo ng leksyon na ito, ang iyong proyekto ay magkakaroon ng:** > ``` > bank/ > β”œβ”€β”€ index.html > β”œβ”€β”€ app.js > └── style.css > ``` > > **Mga responsibilidad ng file:** > - **index.html**: Naglalaman ng lahat ng templates at nagbibigay ng app structure > - **app.js**: Nagha-handle ng routing, navigation, at template management > - **Templates**: Nagde-define ng UI para sa login, dashboard, at iba pang screen --- ## HTML Templates Ang templates ay nagso-solve ng fundamental na problema sa web development. Noong naimbento ni Gutenberg ang movable type printing noong 1440s, napagtanto niya na sa halip na mag-ukit ng buong pahina, maaari siyang gumawa ng reusable na mga letra at ayusin ang mga ito kung kinakailangan. Ang HTML templates ay gumagana sa parehong prinsipyo – sa halip na gumawa ng magkakahiwalay na HTML files para sa bawat screen, magde-define ka ng reusable na mga istruktura na maaaring ipakita kung kinakailangan. ```mermaid flowchart TD A["πŸ“‹ Template Definition"] --> B["πŸ’¬ Hidden in DOM"] B --> C["πŸ” JavaScript Finds Template"] C --> D["πŸ“‹ Clone Template Content"] D --> E["πŸ”— Attach to Visible DOM"] E --> F["πŸ‘οΈ User Sees Content"] G["Login Template"] --> A H["Dashboard Template"] --> A I["Future Templates"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Isipin ang templates bilang blueprint para sa iba't ibang bahagi ng iyong app. Katulad ng isang arkitekto na gumagawa ng isang blueprint at ginagamit ito nang maraming beses sa halip na muling iguhit ang magkaparehong mga kwarto, gumagawa tayo ng templates nang isang beses at ini-instantiate ang mga ito kung kinakailangan. Itinatago ng browser ang mga templates na ito hanggang sa i-activate ito ng JavaScript. Kung gusto mong gumawa ng maraming screen para sa isang web page, isang solusyon ay gumawa ng isang HTML file para sa bawat screen na gusto mong ipakita. Gayunpaman, ang solusyon na ito ay may ilang abala: - Kailangan mong i-reload ang buong HTML kapag nagpapalit ng screen, na maaaring mabagal. - Mahirap mag-share ng data sa pagitan ng iba't ibang screen. Ang isa pang paraan ay magkaroon lamang ng isang HTML file, at mag-define ng maraming [HTML templates](https://developer.mozilla.org/docs/Web/HTML/Element/template) gamit ang `