# ဘဏ်အက်ပ်တည်ဆောက်ခြင်း အပိုင်း ၁: HTML အခြေခံပုံစံများနှင့် 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 ``` ၁၉၆၉ ခုနှစ်တွင် Apollo 11 ၏ လမ်းညွှန်ကွန်ပျူတာသည် လမင်းကိုသွားရောက်စဉ်တွင် စနစ်တစ်ခုလုံးကို ပြန်စတင်ရန်မလိုဘဲ အစီအစဉ်များကို ပြောင်းလဲရန်လိုအပ်ခဲ့သည်။ ခေတ်သစ် Web App များသည်လည်း အတူတူပင်ဖြစ်သည် - အရာအားလုံးကို အစမှပြန်လည်တင်မထားဘဲ သင်မြင်ရသောအရာများကို ပြောင်းလဲသည်။ ၎င်းသည် ယနေ့ခေတ်တွင် အသုံးပြုသူများမျှော်လင့်သော ချောမွေ့ပြီး တုံ့ပြန်မှုရှိသော အတွေ့အကြုံကို ဖန်တီးပေးသည်။ ရိုးရာ Website များသည် အပြင်အဆင်တစ်ခုစီအတွက် စာမျက်နှာအားလုံးကို ပြန်လည်တင်ထားသည့်အစား ခေတ်သစ် Web App များသည် ပြောင်းလဲရန်လိုအပ်သော အပိုင်းများကိုသာ Update လုပ်သည်။ ၎င်းနည်းလမ်းသည် Mission Control သည် အမြဲတမ်းဆက်သွယ်မှုကို ထိန်းသိမ်းထားပြီး အခြားအပြင်အဆင်များကို ပြောင်းလဲသည့်နည်းလမ်းနှင့် တူသည်။ ၎င်းသည် ကျွန်ုပ်တို့မျှော်လင့်သော ချောမွေ့သော အတွေ့အကြုံကို ဖန်တီးပေးသည်။ အဓိကကွာခြားမှုများမှာ - | ရိုးရာ Multi-Page App | ခေတ်သစ် Single-Page App | |----------------------------|-------------------------| | **Navigation** | စာမျက်နှာအားလုံးကို ပြန်လည်တင်ထားသည် | အချက်အလက်များကို ချက်ချင်းပြောင်းလဲသည် | | **Performance** | HTML အားလုံးကို Download လုပ်ရသောကြောင့် နှေးသည် | အပိုင်းများကိုသာ Update လုပ်သောကြောင့် မြန်သည် | | **User Experience** | စာမျက်နှာပြောင်းလဲမှုများသည် အတက်အကျဖြစ်သည် | App-like ချောမွေ့မှုများ | | **Data Sharing** | စာမျက်နှာများအကြား အချက်အလက်မျှဝေမှု ခက်ခဲသည် | State Management လွယ်ကူသည် | | **Development** | HTML ဖိုင်များစွာကို ထိန်းသိမ်းရသည် | Dynamic Template များပါရှိသော HTML တစ်ခု | **အဆင့်တိုးတက်မှုကို နားလည်ခြင်း:** - **ရိုးရာ App များ**သည် Navigation လုပ်မှုတစ်ခုစီအတွက် Server Request လိုအပ်သည် - **ခေတ်သစ် SPA များ**သည် တစ်ကြိမ် Load လုပ်ပြီး JavaScript အသုံးပြု၍ အချက်အလက်များကို Dynamic Update လုပ်သည် - **User မျှော်လင့်ချက်များ**သည် ချက်ချင်း၊ ချောမွေ့သော အပြောင်းအလဲများကို အားပေးသည် - **Performance အကျိုးကျေးဇူးများ**မှာ Bandwidth လျှော့ချခြင်းနှင့် တုံ့ပြန်မှု မြန်ဆန်ခြင်း ဒီသင်ခန်းစာမှာ ကျွန်ုပ်တို့ ချောမွေ့စွာ ဆက်လက်သွားနိုင်သော စာမျက်နှာများစွာပါဝင်သော ဘဏ်အက်ပ်တစ်ခုကို တည်ဆောက်ပါမည်။ သိပ္ပံပညာရှင်များသည် အတူတူအသုံးပြုနိုင်သော ကိရိယာများကို အသုံးပြု၍ အတူတူပြောင်းလဲနိုင်သော စမ်းသပ်မှုများအတွက် အသုံးပြုသည့်နည်းလမ်းအတိုင်း ကျွန်ုပ်တို့သည် HTML Template များကို လိုအပ်သည့်အခါ ပြသနိုင်သော Reusable Component များအဖြစ် အသုံးပြုပါမည်။ သင်သည် HTML Template များ (စာမျက်နှာများအတွက် Reusable Blueprint များ), JavaScript Routing (စာမျက်နှာများအကြား ပြောင်းလဲမှုစနစ်), နှင့် Browser ၏ History API (Back Button ကို သင့်တော်သောအတိုင်း အလုပ်လုပ်စေသောစနစ်) တို့နှင့်အတူ အလုပ်လုပ်ရမည်ဖြစ်သည်။ ၎င်းသည် React, Vue, Angular စသည်တို့ကဲ့သို့ Framework များတွင် အသုံးပြုသော အခြေခံနည်းလမ်းများဖြစ်သည်။ သင်ခန်းစာအဆုံးတွင် Single-Page Application ၏ Professional Principles များကို ပြသသော ဘဏ်အက်ပ်တစ်ခုကို ရရှိမည်ဖြစ်သည်။ ```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](https://ff-quizzes.netlify.app/web/quiz/41) ### သင်လိုအပ်မည့်အရာများ ကျွန်ုပ်တို့၏ ဘဏ်အက်ပ်ကို စမ်းသပ်ရန် Local Web Server လိုအပ်မည် - စိုးရိမ်စရာမရှိပါ၊ ၎င်းသည် လွယ်ကူသည်။ သင့်တွင် ရှိပြီးသားမဟုတ်ပါက [Node.js](https://nodejs.org) ကို Install လုပ်ပြီး သင့် Project Folder မှ `npx lite-server` ကို Run လုပ်ပါ။ ၎င်း Command သည် Local Server ကို ဖန်တီးပြီး သင့် App ကို Browser တွင် အလိုအလျောက်ဖွင့်ပေးသည်။ ### ပြင်ဆင်မှု သင့်ကွန်ပျူတာတွင် `bank` ဟု Folder တစ်ခုဖန်တီးပြီး ၎င်းတွင် `index.html` ဟု File တစ်ခုထည့်ပါ။ ကျွန်ုပ်တို့သည် HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) မှ စတင်ပါမည်: ```html Bank App ``` **ဤ Boilerplate သည် ပေးသောအရာများ:** - **HTML5 Document Structure** ကို DOCTYPE ကြေညာချက်မှန်ကန်စွာဖြင့် တည်ဆောက်ပေးသည် - **Character Encoding** ကို UTF-8 အဖြစ် Configure လုပ်၍ အပြည်ပြည်ဆိုင်ရာစာသားများကို ထောက်ပံ့ပေးသည် - **Responsive Design** ကို Viewport Meta Tag ဖြင့် Mobile Compatibility ရရှိစေသည် - **Title** ကို Browser Tab တွင် ဖော်ပြရန် သတ်မှတ်ပေးသည် - **Clean Body Section** ကို ဖန်တီး၍ Application ကို တည်ဆောက်ရန် အဆင်ပြေစေသည် > 📁 **Project Structure Preview** > > **သင်ခန်းစာအဆုံးတွင် သင့် Project တွင် ပါဝင်မည့်အရာများ:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **File တစ်ခုစီ၏ တာဝန်များ:** > - **index.html**: Template အားလုံးကို ပါဝင်ပြီး App Structure ကို ပေးသည် > - **app.js**: Routing, Navigation နှင့် Template Management ကို Handle လုပ်သည် > - **Templates**: Login, Dashboard နှင့် အခြား Screen များအတွက် UI ကို သတ်မှတ်သည် --- ## HTML Template များ Template များသည် Web Development တွင် အခြေခံပြဿနာတစ်ခုကို ဖြေရှင်းပေးသည်။ ၁၄၄၀ ခုနှစ်တွင် Gutenberg သည် Movable Type Printing ကို တီထွင်ခဲ့သောအခါ စာမျက်နှာများကို carve လုပ်ရန်အစား Reusable Letter Block များကို ဖန်တီးပြီး လိုအပ်သလို စီစဉ်နိုင်သည်ကို သိရှိခဲ့သည်။ HTML Template များသည် ထိုနည်းလမ်းတူပင်ဖြစ်သည် - စာမျက်နှာတစ်ခုစီအတွက် HTML File များကို ဖန်တီးရန်အစား Reusable Structure များကို သတ်မှတ်ပြီး လိုအပ်သောအခါ ပြသနိုင်သည်။ ```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 ``` Template များကို App ၏ အပိုင်းများအတွက် Blueprint အဖြစ် စဉ်းစားပါ။ Architect တစ်ဦးသည် Blueprint တစ်ခုကို ဖန်တီးပြီး အခန်းတစ်ခုစီကို ထပ်မံရေးဆွဲရန်မလိုဘဲ Template များကို တစ်ကြိမ်သာ ဖန်တီးပြီး လိုအပ်သလို အသုံးပြုနိုင်သည်။ Browser သည် Template များကို JavaScript သုံးပြီး Activate လုပ်သည်အထိ ဖုံးကွယ်ထားသည်။ Web Page အတွက် Screen များစွာဖန်တီးလိုပါက Screen တစ်ခုစီအတွက် HTML File တစ်ခုစီဖန်တီးနိုင်သည်။ သို့သော် ၎င်းနည်းလမ်းသည် အဆင်မပြေမှုများနှင့် ရင်ဆိုင်ရမည်: - Screen ပြောင်းလဲမှုတွင် HTML အားလုံးကို ပြန်လည်တင်ထားရမည်ဖြစ်ပြီး နှေးသည်။ - Screen များအကြား အချက်အလက်မျှဝေမှု ခက်ခဲသည်။ အခြားနည်းလမ်းတစ်ခုမှာ HTML File တစ်ခုသာရှိပြီး `