# बैंकिंग ऐप बनाएं भाग 1: वेब ऐप में HTML टेम्प्लेट और रूटिंग ```mermaid journey title आपका बैंकिंग ऐप विकास यात्रा section SPA मूल बातें सिंगल-पेज ऐप समझें: 3: Student टेम्पलेट अवधारणाएँ सीखें: 4: Student DOM हेरफेर में महारत हासिल करें: 4: Student section राउटिंग सिस्टम क्लाइंट-साइड राउटिंग लागू करें: 4: Student ब्राउज़र इतिहास संभालें: 5: Student नेविगेशन सिस्टम बनाएँ: 5: Student section पेशेवर पैटर्न मॉड्यूलर आर्किटेक्चर बनाएं: 5: Student सर्वोत्तम प्रथाएँ लागू करें: 5: Student उपयोगकर्ता अनुभव बनाएँ: 5: Student ``` जब अपोलो 11 का गाइडेंस कंप्यूटर 1969 में चंद्रमा की ओर नेविगेट कर रहा था, तो उसे पूरे सिस्टम को पुनः चालू किए बिना विभिन्न प्रोग्रामों के बीच स्विच करना पड़ता था। आधुनिक वेब एप्लिकेशन भी इसी प्रकार काम करते हैं – ये बिना सब कुछ फिर से लोड किए, आपके सामने दिखाई देने वाली चीज़ों को बदलते हैं। इससे उपयोगकर्ताओं को आज के समय में अपेक्षित सहज और उत्तरदायी अनुभव मिलता है। पारंपरिक वेबसाइटों के विपरीत जो हर इंटरैक्शन के लिए पूरे पेज को पुनः लोड करती हैं, आधुनिक वेब ऐप केवल उन हिस्सों को अपडेट करते हैं जिन्हें बदलने की ज़रूरत होती है। यह दृष्टिकोण, ठीक वैसे ही जैसे मिशन कंट्रोल लगातार संचार बनाये रखते हुए विभिन्न डिस्प्ले के बीच स्विच करता है, वह सुंदर और सहज अनुभव बनाता है जिसकी हम उम्मीद करते हैं। यहाँ वह अंतर है जो अनुभव को इतना प्रभावशाली बनाता है: | पारंपरिक मल्टी-पेज ऐप्स | आधुनिक सिंगल-पेज ऐप्स | |-------------------------|-------------------------| | **नेविगेशन** | प्रत्येक स्क्रीन के लिए पूर्ण पेज रीलोड | तत्काल कंटेंट स्विचिंग | | **प्रदर्शन** | पूरी HTML डाउनलोड के कारण धीमा | आंशिक अपडेट के साथ तेज़ | | **उपयोगकर्ता अनुभव** | अचानक पेज फ्लैश | स्मूथ, ऐप जैसे ट्रांज़िशन | | **डेटा साझा करना** | पेजों के बीच कठिन | आसान स्टेट मैनेजमेंट | | **डेवलपमेंट** | कई HTML फाइलों का रखरखाव | एकल HTML के साथ डायनेमिक टेम्प्लेट | **विकास को समझना:** - **पारंपरिक ऐप्स** हर नेविगेशन क्रिया के लिए सर्वर रिक्वेस्ट मांगते हैं - **आधुनिक SPA** एक बार लोड होते हैं और JavaScript से कंटेंट को डायनामिकली अपडेट करते हैं - **उपयोगकर्ता आशाएं** अब त्वरित, सहज इंटरैक्शन को प्राथमिकता देती हैं - **प्रदर्शन लाभ** में कम बैंडविड्थ और तेज़ प्रतिक्रिया शामिल हैं इस पाठ में, हम एक बैंकिंग ऐप बनाएंगे जिसमें कई स्क्रीन होंगी जो एक साथ सुचारू रूप से जुड़ी होंगी। जैसे वैज्ञानिक मॉड्यूलर इंस्ट्रूमेंट्स का उपयोग करते हैं जिन्हें अलग-अलग प्रयोगों के लिए पुनः कॉन्फ़िगर किया जा सकता है, हम HTML टेम्प्लेट्स का उपयोग करेंगे जिन्हें पुन: उपयोग योग्य घटकों के रूप में दिखाया जा सकेगा। आप HTML टेम्प्लेट्स (विभिन्न स्क्रीन के लिए पुन: उपयोग योग्य ब्लूप्रिंट), JavaScript रूटिंग (सिस्टम जो स्क्रीन के बीच स्विच करता है), और ब्राउज़र के इतिहास API (जो बैक बटन को अपेक्षित रूप से काम करता रखता है) के साथ काम करेंगे। ये वही मूलभूत तकनीकें हैं जिनका उपयोग React, Vue, और Angular जैसे फ्रेमवर्क्स करते हैं। अंत तक, आपके पास एक कामकाजी बैंकिंग ऐप होगा जो पेशेवर सिंगल-पेज एप्लिकेशन सिद्धांतों को दर्शाएगा। ```mermaid mindmap root((सिंगल-पेज एप्लिकेशन)) Architecture टेम्पलेट सिस्टम क्लाइंट-साइड राउटिंग स्टेट मैनेजमेंट इवेंट हैंडलिंग Templates पुन: उपयोग योग्य घटक गतिशील सामग्री DOM हेरफेर सामग्री स्विचिंग Routing URL प्रबंधन इतिहास API नेविगेशन लॉजिक ब्राउज़र एकीकरण User Experience तेज़ नेविगेशन चिकनी संक्रमण सुसंगत स्थिति आधुनिक इंटरैक्शन Performance कम सर्वर अनुरोध तेज़ पेज संक्रमण प्रभावी संसाधन उपयोग बेहतर रिस्पांसिवनेस ``` ## प्री-लेक्चर क्विज़ [प्री-लेक्चर क्विज़](https://ff-quizzes.netlify.app/web/quiz/41) ### आपको क्या चाहिए होगा हमें हमारे बैंकिंग ऐप को टेस्ट करने के लिए एक लोकल वेब सर्वर की आवश्यकता होगी – चिंता करने की जरूरत नहीं, यह सुनने से ज्यादा आसान है! यदि आपके पास पहले से नहीं है, तो बस [Node.js](https://nodejs.org) इंस्टॉल करें और अपने प्रोजेक्ट फोल्डर से `npx lite-server` चलाएं। यह कमांड एक लोकल सर्वर चलाएगा और अपने आप ही आपके ऐप को ब्राउज़र में खोल देगा। ### तैयारी अपने कंप्यूटर पर एक फोल्डर बनाएं जिसका नाम `bank` हो और उसमें एक फाइल `index.html` बनाएँ। हम इस HTML [बॉयलरप्लेट](https://en.wikipedia.org/wiki/Boilerplate_code) से शुरू करेंगे: ```html Bank App ``` **यह बॉयलरप्लेट क्या प्रदान करता है:** - **HTML5 डॉक्यूमेंट संरचना** स्थापित करता है उचित DOCTYPE घोषणा के साथ - **चरित्र एनकोडिंग** UTF-8 के रूप में सेट करता है ताकि अंतरराष्ट्रीय टेक्स्ट समर्थित हो - **रेस्पॉन्सिव डिज़ाइन सक्षम करता है** मोबाइल संगतता के लिए viewport meta टैग के साथ - **ब्राउज़र टैब में दिखाई देने वाला शीर्षक सेट करता है** - **एक साफ़ body सेक्शन बनाता है** जहाँ हम अपना एप्लिकेशन बनाएंगे > 📁 **प्रोजेक्ट संरचना पूर्वावलोकन** > > **इस पाठ के अंत तक, आपका प्रोजेक्ट निम्नलिखित शामिल करेगा:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **फाइल जिम्मेदारियां:** > - **index.html**: सभी टेम्प्लेट्स रखता है और ऐप के ढांचे को प्रदान करता है > - **app.js**: रूटिंग, नेविगेशन, और टेम्प्लेट प्रबंधन को संभालता है > - **टेम्प्लेट्स**: लॉगिन, डैशबोर्ड, और अन्य स्क्रीन के UI को परिभाषित करते हैं --- ## HTML टेम्प्लेट्स टेम्प्लेट्स वेब विकास में एक मौलिक समस्या का समाधान करते हैं। जब गुटेनबर्ग ने 1440 के दशक में चलायमान टाइप प्रिंटिंग का आविष्कार किया था, तो उन्होंने महसूस किया कि पूरे पेज बनाएं बिना, वे पुन: उपयोग योग्य अक्षर ब्लॉक बना सकते हैं और उन्हें जरूरत के अनुसार व्यवस्थित कर सकते हैं। HTML टेम्प्लेट्स भी इसी सिद्धांत पर काम करते हैं – हर स्क्रीन के लिए अलग HTML फाइल बनाने के बजाय, आप पुन: उपयोग योग्य संरचनाएं परिभाषित करते हैं जिन्हें आवश्यकता अनुसार दिखाया जा सकता है। ```mermaid flowchart TD A["📋 टेम्पलेट परिभाषा"] --> 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 ``` टेम्प्लेट्स को अपने ऐप के विभिन्न हिस्सों के ब्लूप्रिंट के रूप में सोचें। जैसे एक वास्तुकार एक ब्लूप्रिंट बनाता है और उसे कई बार उपयोग करता है बजाए एक जैसे कमरे बार-बार बनाये, हम टेम्प्लेट्स एक बार बनाते हैं और आवश्यकता अनुसार उनका इस्तेमाल करते हैं। ब्राउज़र इन टेम्प्लेट्स को तब तक छिपा कर रखता है जब तक कि JavaScript उन्हें सक्रिय न करे। यदि आप एक वेब पेज के लिए कई स्क्रीन बनाना चाहते हैं, तो एक तरीका यह होगा कि हर स्क्रीन के लिए एक HTML फाइल बनाई जाए। लेकिन इस समाधान में कुछ असुविधाएं हैं: - स्क्रीन बदलते समय पूरे HTML को पुनः लोड करना पड़ता है, जो धीमा हो सकता है। - विभिन्न स्क्रीन के बीच डेटा साझा करना मुश्किल होता है। एक अन्य तरीका है कि केवल एक HTML फाइल हो, और उसमें कई [HTML टेम्प्लेट्स](https://developer.mozilla.org/docs/Web/HTML/Element/template) `