# ব্যাংকিং অ্যাপ তৈরি পর্ব ১: ওয়েব অ্যাপে HTML টেমপ্লেট এবং রুট ```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 ``` ১৯৬৯ সালে অ্যাপোলো ১১ এর গাইডেন্স কম্পিউটার যখন চাঁদে পৌঁছানোর জন্য নেভিগেট করছিল, তখন এটি পুরো সিস্টেমটি পুনরায় চালু না করে বিভিন্ন প্রোগ্রামের মধ্যে স্যুইচ করেছিল। আধুনিক ওয়েব অ্যাপ্লিকেশনও একইভাবে কাজ করে – এটি যা দেখানো হচ্ছে তা পরিবর্তন করে, কিন্তু সবকিছু নতুন করে লোড করে না। এটি ব্যবহারকারীদের জন্য মসৃণ এবং দ্রুত অভিজ্ঞতা তৈরি করে। প্রথাগত ওয়েবসাইট যেখানে প্রতিটি ইন্টারঅ্যাকশনের জন্য পুরো পেজটি পুনরায় লোড করে, আধুনিক ওয়েব অ্যাপ্লিকেশন শুধুমাত্র প্রয়োজনীয় অংশগুলো আপডেট করে। এই পদ্ধতি, ঠিক যেমন মিশন কন্ট্রোল বিভিন্ন ডিসপ্লের মধ্যে স্যুইচ করে যোগাযোগ বজায় রাখে, সেই মসৃণ অভিজ্ঞতা তৈরি করে যা আমরা এখন প্রত্যাশা করি। এটি এত নাটকীয় পার্থক্য তৈরি করে কারণ: | প্রথাগত মাল্টি-পেজ অ্যাপ | আধুনিক সিঙ্গেল-পেজ অ্যাপ | |----------------------------|-------------------------| | **নেভিগেশন** | প্রতিটি স্ক্রিনের জন্য পুরো পেজ পুনরায় লোড | তাৎক্ষণিক কন্টেন্ট পরিবর্তন | | **পারফরম্যান্স** | সম্পূর্ণ HTML ডাউনলোডের কারণে ধীর | আংশিক আপডেটের মাধ্যমে দ্রুত | | **ব্যবহারকারীর অভিজ্ঞতা** | পেজ ফ্ল্যাশিং | মসৃণ, অ্যাপ-সদৃশ ট্রানজিশন | | **ডেটা শেয়ারিং** | পেজগুলোর মধ্যে শেয়ার করা কঠিন | সহজ স্টেট ম্যানেজমেন্ট | | **ডেভেলপমেন্ট** | একাধিক HTML ফাইল বজায় রাখা | ডায়নামিক টেমপ্লেট সহ একটি HTML | **উন্নতির বিবর্তন বুঝুন:** - **প্রথাগত অ্যাপ** প্রতিটি নেভিগেশন অ্যাকশনের জন্য সার্ভার রিকোয়েস্ট প্রয়োজন - **আধুনিক SPA** একবার লোড হয় এবং জাভাস্ক্রিপ্ট ব্যবহার করে কন্টেন্ট ডায়নামিকভাবে আপডেট করে - **ব্যবহারকারীর প্রত্যাশা** এখন তাৎক্ষণিক, মসৃণ ইন্টারঅ্যাকশন পছন্দ করে - **পারফরম্যান্স সুবিধা** ব্যান্ডউইথ কমানো এবং দ্রুত প্রতিক্রিয়া প্রদান এই পাঠে, আমরা একটি ব্যাংকিং অ্যাপ তৈরি করব যেখানে একাধিক স্ক্রিন মসৃণভাবে একসাথে কাজ করবে। যেমন বিজ্ঞানীরা বিভিন্ন পরীক্ষার জন্য পুনর্গঠিত করার জন্য মডুলার যন্ত্র ব্যবহার করেন, আমরা HTML টেমপ্লেট ব্যবহার করব যা প্রয়োজন অনুযায়ী পুনরায় ব্যবহার করা যাবে। আপনি HTML টেমপ্লেট (পুনরায় ব্যবহারযোগ্য ব্লুপ্রিন্ট বিভিন্ন স্ক্রিনের জন্য), জাভাস্ক্রিপ্ট রাউটিং (স্ক্রিনগুলোর মধ্যে স্যুইচ করার সিস্টেম), এবং ব্রাউজারের হিস্টোরি API (যা ব্যাক বাটনকে প্রত্যাশিতভাবে কাজ করতে সাহায্য করে) নিয়ে কাজ করবেন। এগুলোই React, Vue, এবং Angular এর মতো ফ্রেমওয়ার্কে ব্যবহৃত মৌলিক কৌশল। শেষে, আপনার কাছে একটি কার্যকরী ব্যাংকিং অ্যাপ থাকবে যা পেশাদার সিঙ্গেল-পেজ অ্যাপ্লিকেশন নীতিগুলো প্রদর্শন করবে। ```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 ``` ## প্রি-লেকচার কুইজ [প্রি-লেকচার কুইজ](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 কনফিগার করে আন্তর্জাতিক টেক্সট সাপোর্টের জন্য - **রেসপন্সিভ ডিজাইন সক্ষম করে** মোবাইল কম্প্যাটিবিলিটির জন্য ভিউপোর্ট মেটা ট্যাগ দিয়ে - **বর্ণনামূলক শিরোনাম সেট করে** যা ব্রাউজার ট্যাবে প্রদর্শিত হয় - **পরিষ্কার বডি সেকশন তৈরি করে** যেখানে আমরা আমাদের অ্যাপ্লিকেশন তৈরি করব > 📁 **প্রজেক্ট স্ট্রাকচার প্রিভিউ** > > **এই পাঠের শেষে, আপনার প্রজেক্টে থাকবে:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **ফাইলের দায়িত্ব:** > - **index.html**: সমস্ত টেমপ্লেট ধারণ করে এবং অ্যাপের স্ট্রাকচার প্রদান করে > - **app.js**: রাউটিং, নেভিগেশন এবং টেমপ্লেট ম্যানেজমেন্ট পরিচালনা করে > - **টেমপ্লেট**: লগইন, ড্যাশবোর্ড এবং অন্যান্য স্ক্রিনের UI সংজ্ঞায়িত করে --- ## HTML টেমপ্লেট টেমপ্লেট ওয়েব ডেভেলপমেন্টে একটি মৌলিক সমস্যার সমাধান করে। যখন গুটেনবার্গ ১৪৪০-এর দশকে মুভেবল টাইপ প্রিন্টিং আবিষ্কার করেছিলেন, তিনি বুঝতে পেরেছিলেন যে পুরো পেজ খোদাই করার পরিবর্তে, তিনি পুনরায় ব্যবহারযোগ্য অক্ষর ব্লক তৈরি করতে পারেন এবং প্রয়োজন অনুযায়ী সাজাতে পারেন। HTML টেমপ্লেট একই নীতিতে কাজ করে – প্রতিটি স্ক্রিনের জন্য আলাদা HTML ফাইল তৈরি করার পরিবর্তে, আপনি পুনরায় ব্যবহারযোগ্য স্ট্রাকচার সংজ্ঞায়িত করেন যা প্রয়োজন হলে প্রদর্শিত হতে পারে। ```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 ``` টেমপ্লেটকে আপনার অ্যাপের বিভিন্ন অংশের ব্লুপ্রিন্ট হিসেবে ভাবুন। ঠিক যেমন একজন স্থপতি একটি ব্লুপ্রিন্ট তৈরি করেন এবং এটি একাধিকবার ব্যবহার করেন, একই রুম পুনরায় আঁকার পরিবর্তে, আমরা একবার টেমপ্লেট তৈরি করি এবং প্রয়োজন অনুযায়ী এটি ব্যবহার করি। ব্রাউজার এই টেমপ্লেটগুলো লুকিয়ে রাখে যতক্ষণ না জাভাস্ক্রিপ্ট এগুলো সক্রিয় করে। যদি আপনি একটি ওয়েব পেজের জন্য একাধিক স্ক্রিন তৈরি করতে চান, একটি সমাধান হতে পারে প্রতিটি স্ক্রিনের জন্য একটি HTML ফাইল তৈরি করা। তবে, এই সমাধান কিছু অসুবিধা নিয়ে আসে: - স্ক্রিন পরিবর্তন করার সময় পুরো HTML পুনরায় লোড করতে হয়, যা ধীর হতে পারে। - বিভিন্ন স্ক্রিনের মধ্যে ডেটা শেয়ার করা কঠিন। আরেকটি পদ্ধতি হলো শুধুমাত্র একটি HTML ফাইল রাখা এবং `