# ബാങ്കിംഗ് ആപ്പ് നിർമ്മിക്കൽ ഭാഗം 1: വെബ് ആപ്ലിക്കേഷനിലെ HTML ടൈംപ്ലേറ്റുകളും റൂട്ടുകളും ```mermaid journey title നിങ്ങളുടെ ബാങ്കിംഗ് ആപ്പ് വികസന യാത്ര section SPA അടിസ്ഥാനങ്ങൾ Single-page ആപ്പുകൾ മനസിലാക്കുക: 3: Student ടെംപ്ലേറ്റ് ആശയങ്ങൾ പഠിക്കുക: 4: Student DOM മാനിപ്പുലേഷൻ പകർന്നു വയ്ക്കുക: 4: Student section റൗട്ടിംഗ് സിസ്റ്റങ്ങൾ ക്ലയന്റ്-സൈഡ് റൗട്ടിംഗ് നടപ്പിലാക്കുക: 4: Student ബ്രൗസർ ചരിത്രം കൈകാര്യം ചെയ്യുക: 5: Student നാവിഗേഷൻ സിസ്റ്റങ്ങൾ സൃഷ്ടിക്കുക: 5: Student section പ്രൊഫഷണൽ പാറ്റേണുകൾ മോഡ്യുലാർ ആർക്കിടെക്ചർ നിർമ്മിക്കുക: 5: Student മികച്ച പ്രയോഗങ്ങൾ നടപ്പിലാക്കുക: 5: Student ഉപയോക്തൃ അനുഭവങ്ങൾ സൃഷ്ടിക്കുക: 5: Student ``` 1969-ൽ അപ്പോളോ 11-ന്റെ ഗൈഡൻസ് കമ്പ്യൂട്ടർ ചന്ദ്രനെ ലക്ഷ്യമിട്ട് നാവിഗേറ്റ് ചെയ്യുമ്പോൾ, സമഗ്ര സിസ്റ്റം പുനരാരംഭിക്കാതെ വിവിധ പ്രോഗ്രാമുകളിൽ മാറേണ്ടി വന്നു. ആധുനിക വെബ് ആപ്ലിക്കേഷനുകളും ഇതുപോലെയാണ് – നിങ്ങള്‍ കാണുന്നതും പുനരാരോംഭിക്കാതെ മാറ്റുകയും ചെയ്യുന്നു. ഇത് ഉപയോക്താക്കൾ പ്രതീക്ഷിക്കുന്ന സുതാര്യവും പ്രതികരണക്ഷമവുമായ അനുഭവം സൃഷ്ടിക്കുന്നു. പരമ്പരാഗത വെബ്‌സൈറ്റുകളിൽ ഓരോ ഇടപെടലിനും മുഴുവൻ പേജ് പുനഃലോഡ് ചെയ്യുന്നതിന് പകരം, ആധുനിക വെബ് ആപ്ലിക്കേഷനുകൾ മാറ്റം ആവശ്യമുള്ള ഭാഗങ്ങൾ മാത്രമെ അപ്ഡേറ്റ് ചെയ്യൂ. മിഷൻ കൺട്രോൾ വിവിധ ഡിസ്‌പ്ലേകൾ തമ്മിൽ മാറുമ്പോൾ തുടർച്ചയായ കമ്മ്യൂണിക്കേഷൻ നിലനിർത്തുന്ന രീതിയിൽ, ഇത് ഒരുവട്ടയും സുതാര്യവും വേഗമേറിയ അനുഭവം ഒരുക്കുന്നു. ഈ വ്യത്യാസം നിർണായകം ആകുന്നത് ഇതാണ്: | പരമ്പരാഗത മൾട്ടി-പേജ് ആപ്ലിക്കേഷനുകൾ | ആധുനിക സിംഗിൾ-പേജ് ആപ്ലിക്കേഷനുകൾ | |----------------------------|-------------------------| | **നാവിഗേഷൻ** | ഓരോ സ്ക്രീൻ മുറുക്കി മുഴുവൻ പേജ് പുനഃലോഡ് ചെയ്യുന്നു | ഉടൻ ഉള്ളടക്കം മാറ്റം | | **പ്രകടനം** | സമ്പൂർണ്ണ HTML ഡൗൺലോഡ് കാരണം മന്ദം | ഭാഗിക അപ്ഡേറ്റ് കാരണം വേഗം | | **ഉപയോക്തൃ അനുഭവം** | പേജ് കത്തി മാറ്റങ്ങള്‍ | സുതാര്യവും ആപ്പ് പോലുള്ള ട്രാൻസിഷനുകൾ | | **ഡാറ്റ പങ്കിടൽ** | പേജുകളിൽ കഠിനം | ലളിതമായ സ്റ്റേറ്റ് മാനേജ്മെന്റ് | | **ഡെവലപ്പ്മെന്റ്** | നിരവധി HTML ഫയലുകൾ നിയന്ത്രിക്കേണ്ടത് | ഡൈനാമിക് ടൈംപ്ലേറ്റുകളോടെ ഏകദേശം HTML | **ഭവന തകർക്കൽ മനസ്സിലാക്കൽ:** - **പരമ്പരാഗത ആപ്ലിക്കേഷനുകൾ** ഓരോ നാവിഗേഷനും സേർവറുമായി ഒരു അഭ്യർത്ഥന ആവശ്യപ്പെടുന്നു - **ആധുനിക SPAs** ഒരിക്കൽ ലോഡ് ചെയ്ത് ജാവാസ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഉള്ളടക്കം ഡൈനാമിക് ആയി അപ്ഡേറ്റ് ചെയ്യുന്നു - **ഉപയോക്തൃ പ്രതീക്ഷകൾ** ഇപ്പോൾ ഉടന്‍ സുതാര്യ ഇടപെടലുകളിലേക്ക് മാറിയിട്ടുണ്ട് - **പ്രകടന ലാഭം** ബാന്റ്‌വിഡ്ത് കുറഞ്ഞു വേഗത കൂടുന്നു ഈ പാഠത്തിൽ, പല സ്ക്രീനുകളുള്ള ഒരു ബാങ്കിംഗ് ആപ്പ് കെട്ടിയെടുക്കും, ഒന്നിലേറെ സ്ക്രീനുകൾ സഹായത്തോടെ സഹപ്രവഹനം സൃഷ്ടിക്കും. ശാസ്ത്രജ്ഞർ വിവിധ പരീക്ഷണങ്ങൾക്ക് പുനരഗ്ഗഠിക്കാവുന്ന ഘടകങ്ങൾ ഉപയോഗിക്കുന്നതുപോലെ, HTML ടൈംപ്ലേറ്റുകളെ പുനരുപയോഗ ശേഷിയുള്ള ഘടകങ്ങളായി ഉപയോഗിക്കും. നിങ്ങൾ HTML ടൈംപ്ലേറ്റുകളുമായി (വ്യത്യസ്ത സ്ക്രീനുകളിലെ പുനരുപയോഗ ബ്ലൂപ്രിന്റുകൾ), ജാവാസ്ക്രിപ്റ്റ് റൂട്ടിംഗ് (സ്ക്രീനുകൾ തമ്മിൽ മാറുന്ന സംവിധാനം) ഇങ്ങനെ പ്രവർത്തിക്കും; ബ്രൗസറിന്റെ ഹിസ്റ്ററി API (പിന്നോട്ട് ബട്ടൺ പ്രതീക്ഷിച്ചതുപോലെ പ്രവർത്തിക്കുന്നു) എന്നിവയുമായി പ്രവർത്തിക്കും. ഇങ്ങനെ പ്രവർത്തിക്കുന്നത് React, Vue, Angular പോലുള്ള ഫ്രെയിംവർക്ക് മാദ്ധ്യമങ്ങളുടേതും ആണ്. അവസാനിക്കുമ്പോൾ, താങ്കൾക്ക് പ്രൊഫഷണൽ സിംഗിൾ-പേജ് ആപ്ലിക്കേഷൻ സംവിധാനങ്ങൾ പ്രദർശിപ്പിക്കുന്ന ഒരു പ്രവർത്തിക്കുന്ന ബാങ്കിംഗ് ആപ്പ് ഉണ്ടാകും. ```mermaid mindmap root((ഒറ്റ-പേജ് ആപ്ലിക്കേഷനുകൾ)) Architecture Template System Client-side Routing State Management Event Handling Templates പുനഃഉപയോഗയോഗ്യമായ ഘടകങ്ങൾ গতിസ്‌ില യുഗ്മം DOM മാനിപ്പുലേഷൻ ഉള്ളടക്കം മാറിവരവ് Routing URL മാനേജ്മെന്റ് ചരിത്ര API നാവിഗേഷൻ ലൊജിക് ബ്രൗസർ ഇന്റഗ്രേഷൻ User Experience വേഗതയുള്ള നാവിഗേഷൻ സ്മൂത്ത് ട്രാൻസിഷനുകൾ സ്ഥിരമായ അവസ്ഥ ആധുനിക ഇന്ററാക്ഷനുകൾ Performance കുറവായ സെർവർ അഭ്യർത്ഥനകൾ വേഗതയുള്ള പേജ് ട്രാൻസിഷനുകൾ കാര്യക്ഷമമായ സ്രോതസം ഉപയോഗം മെച്ചപ്പെട്ട പ്രതികരണശേഷി ``` ## പ്രീ-ലെക്ചർ ക്വിസ് [Pre-lecture quiz](https://ff-quizzes.netlify.app/web/quiz/41) ### നിങ്ങള്‍ക്കു വേണ്ടത് എന്ത് നമ്മുടെ ബാങ്കിംഗ് ആപ്പ് പരീക്ഷിക്കാൻ ഒരു ലോക്കൽ വെബ് സെർവർ ആവശ്യമാണ് – അത്രയെങ്കിലും ഭയപ്പെടേണ്ടതില്ല! നിങ്ങൾക്കു മുൻപ് സജ്ജീകരിച്ചിട്ടില്ലെങ്കിൽ, വെറും [Node.js](https://nodejs.org) ഇൻസ്റ്റാൾ ചെയ്ത് `npx lite-server` നിങ്ങളുടെയുള്ളോയുള്ള പ്രോജക്ട് ഫോൾഡറിൽ നിന്ന് പ്രവർത്തിപ്പിക്കൂ. ഈ കമാൻഡ് ഒരു ലോക്കൽ സെർവർ സ്റ്റാർട്ട് ചെയ്ത് ബ്രൗസറിൽ സ്വയം നിങ്ങളുടെ ആപ്പ് തുറക്കും. ### തയ്യാറെടുപ്പ് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ `bank` എന്ന ഫോൾഡർ സൃഷ്ടിച്ച് അതിന്റെ ഉള്ളിൽ `index.html` എന്ന ഫയൽ ഉണ്ടാക്കിയെടുക്കുക. നമുക്ക് ഈ HTML [boilerplate](https://en.wikipedia.org/wiki/Boilerplate_code) ഉപയോഗിച്ച് ആരംഭിക്കാം: ```html Bank App ``` **ഈ ബോയിലർപ്ലേറ്റ് നിങ്ങൾക്ക് നൽകുന്നത്:** - **HTML5 ഡോക്യുമെന്റ് ഘടന** ശരിയായ DOCTYPE പ്രഖ്യാപനത്തോടുകൂടെ സ്ഥാപിക്കുന്നു - **ചരിത്രം എൻകോഡിംഗ്** UTF-8 ആയി ക്രമീകരിക്കുന്നു, രാജ്യാന്തര ടെക്സ്റ്റിനെ പിന്തുണയ്ക്കാൻ - **വിഭവത്തോടു ചേർന്ന് റിസ്പോൺസീവ് ഡിസൈൻ** viewport മെറ്റാ ടാഗ് ഉപയോഗിച്ച് ആക്ടിവേറ്റ് ചെയ്യുന്നു - **ബ്രൗസർ ടാബിൽ കാണിക്കുന്ന** വിവരണാത്മകമായ തലക്കെട്ട് സജ്ജമാക്കുന്നു - **ആപ്ലിക്കേഷനു വേണ്ടി ശുദ്ധമായ ബോഡി സെക്ഷൻ** സൃഷ്ടിക്കുന്നു > 📁 **പ്രോജക്റ്റ് ഘടനാരൂപരേഖ** > > **ഈ പാഠത്തിന്റെ അവസാനം, നിങ്ങളുടെ പ്രോജക്റ്റിൽ ഉണ്ടാകുന്നത്:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **ഫയൽ ഉത്തരവാദിത്വങ്ങൾ:** > - **index.html**: എല്ലാ ടൈംപ്ലേറ്റുകളും ആപ്പ് ഘടനയുമടങ്ങുന്നു > - **app.js**: റൂട്ടിംഗ്, നാവിഗേഷൻ, ടൈംപ്ലേറ്റ് മാനേജ്മെന്റ് കൈകാര്യം ചെയ്യുന്നു > - **Templates**: ലോഗിൻ, ഡാഷ്ബോർഡ്, മറ്റ് സ്ക്രീനുകളുടെ UI നിർവചിക്കുന്നു --- ## HTML Templates ടൈംപ്ലേറ്റുകൾ വെബ് ഡവലപ്പ്മെന്റിലെ ഒരു അസാമാന്യ പ്രശ്‌നം പരിഹരിക്കുന്നു. 1440 കളിൽ ഗൂട്ടൻബർഗ് മൂവബിള്‍ ടൈപ്പ് പ്രിന്റിംഗ് കണ്ടുപിടിച്ചപ്പോൾ, പൂർണ്ണ പേജുകൾ ശില്പം ചെയ്യാതെ പുനരുപയോഗയോഗ്യമായ അക്ഷര ബ്ലോക്കുകൾ സൃഷ്ടിച്ച് ആവശ്യത്താലും ക്രമീകരിക്കാമെന്ന് കണ്ടെത്തി. HTML ടൈംപ്ലേറ്റ് അതേ സിദ്ധാന്തത്തിലാണ് – ഓരോ സ്ക്രീനും വേറിട്ട HTML ഫയലുകൾ തയ്യാറാക്കുന്നതിന് പകരം, പുനരുപയോഗയോഗ്യമായ ഘടനകൾ നിർവചിച്ച് അവ ആവശ്യപ്പെട്ടപ്പൊഴാണ് പ്രദർശിപ്പിക്കുന്നത്. ```mermaid flowchart TD A["📋 ടെംപ്ലേറ്റ് നിർവചനo"] --> B["💬 DOMൽ മറച്ചുവെച്ചിരിക്കുന്നു"] B --> C["🔍 ജാവാസ്ക്രിപ്റ്റ് ടെംപ്ലേറ്റ് കണ്ടെത്തുന്നു"] C --> D["📋 ടെംപ്ലേറ്റ് ഉള്ളടക്കം ക്ലോൺ ചെയ്യുക"] D --> E["🔗 দৃശ്യമായ DOM-ലേക്ക് ബന്ധിപ്പിക്കുക"] E --> F["👁️ ഉപയോക്താവ് ഉള്ളടക്കം കാണുന്നു"] G["ലോഗിൻ ടെംപ്ലേറ്റ്"] --> A H["ഡാഷ്ബോർഡ് ടെംപ്ലേറ്റ്"] --> A I["ഭാവി ടെംപ്ലേറ്റുകൾ"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` ടൈംപ്ലേറ്റുകൾ നിങ്ങളുടെ ആപ്പിന്റെ വ്യത്യസ്ത ഭാഗങ്ങളിലേക്കുള്ള ബ്ലൂപ്രിന്റുകളായി വിചാരിക്കുക. ഒരു архитക്ട് ഒരേ ബ്ലൂപ്രിന്റ് പല തവണ ഉപയോഗിച്ച് ഒരേ തരത്തിലുള്ള മുറികൾ വീണ്ടും വരയ്ക്കാതിരിക്കാൻ ചെയ്യുന്നതുപോലെ, നാം ടൈംപ്ലേറ്റുകൾ ഒറ്റ തവണ സൃഷ്ടിച്ച് ആവശ്യമായി വന്നപ്പോഴാകും അത് ഉപയോഗിക്കുന്നത്. ജാവാസ്ക്രിപ്റ്റ് പ്രവർത്തിപ്പിക്കുന്നതുവരെ ബ്രൗസർ ഈ ടൈംപ്ലേറ്റുകൾ മറച്ചുവയ്ക്കുന്നു. ഒരു വെബ് പേജിന് നിരവധി സ്ക്രീനുകൾ സൃഷ്ടിക്കാൻ നിങ്ങള്‍ ഒരു ഒറ്റ HTML ഫയൽ ഓരോ സ്ക്രീനിനും സൃഷ്ടിക്കാമെന്നതാണ് ഒരു പരിഹാരമെന്ന് വിചാരിക്കാം. എന്നാൽ, ഇത് ചില അസൗകര്യങ്ങളുണ്ടാക്കുന്നു: - സ്ക്രീൻ മാരുന്നതിന് മുഴുവൻ HTML പുനഃലോഡ് ചെയ്യേണ്ടി വരും, അതത് സമയം മാനസികത്തിൽ പതിയില്ല. - വ്യത്യസ്ത സ്ക്രീനുകൾക്കിടയിലെ ഡേറ്റ പങ്കുവെയ്ക്കുക ബുദ്ധിമുട്ടാണ്. മറ്റ് മാർഗമാണ് `