Skill

Latest Technologies AJAX অনুরোধ এবং Partial Page Updates গাইড ও নোট

230

AJAX অনুরোধ এবং Partial Page Updates

AJAX (Asynchronous JavaScript and XML) হল একটি প্রযুক্তি যা ওয়েব পৃষ্ঠাগুলি পেজ রিফ্রেশ ছাড়াই সার্ভারের সাথে যোগাযোগ করতে সক্ষম করে। এটি ডাইনামিক এবং ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে সাহায্য করে। AJAX অনুরোধের মাধ্যমে সার্ভার থেকে তথ্য নিয়ে আসা এবং প্রাপ্ত তথ্য দিয়ে ওয়েব পৃষ্ঠার নির্দিষ্ট অংশ (Partial Page Updates) আপডেট করা সম্ভব।


১. AJAX অনুরোধ

১.১. AJAX কি?

  • AJAX ব্যবহার করে ওয়েব পৃষ্ঠায় সামগ্রী ডাইনামিকভাবে লোড করা যায়, যা ব্যবহারকারীদের জন্য একটি মসৃণ অভিজ্ঞতা তৈরি করে।
  • AJAX অনুরোধ সাধারণত GET বা POST HTTP রিকোয়েস্টের মাধ্যমে তৈরি হয়, যা সার্ভার থেকে তথ্য খুঁজে পেতে বা পাঠাতে ব্যবহৃত হয়।

১.২. HTMX এর মাধ্যমে AJAX অনুরোধ

HTMX লাইব্রেরির মাধ্যমে AJAX অনুরোধ তৈরি করা খুব সহজ। উদাহরণস্বরূপ, একটি বোতাম ক্লিক করে সার্ভার থেকে কন্টেন্ট লোড করা:

<button hx-get="/load-data" hx-target="#data-container">Load Data</button>
<div id="data-container"></div>
  • এখানে, বোতামে ক্লিক করলে HTMX /load-data URL থেকে ডেটা লোড করবে এবং #data-container ID এর ডিভে সেটি সন্নিবেশ করবে।

২. Partial Page Updates

২.১. Partial Page Updates কি?

  • Partial Page Updates হল একটি প্রক্রিয়া যার মাধ্যমে শুধুমাত্র ওয়েব পৃষ্ঠার নির্দিষ্ট অংশ আপডেট করা হয়, সম্পূর্ণ পৃষ্ঠাটি পুনরায় লোড করার পরিবর্তে। এটি ব্যবহারকারীর জন্য দ্রুত এবং কার্যকরী অভিজ্ঞতা প্রদান করে।

২.২. HTMX ব্যবহার করে Partial Page Updates

HTMX ব্যবহার করে কিভাবে Partial Page Updates করা যায় তার একটি উদাহরণ:

<form hx-post="/submit-task" hx-target="#task-list" hx-swap="beforeend">
    <input type="text" name="task" placeholder="Add a new task" required>
    <button type="submit">Add Task</button>
</form>

<ul id="task-list">
    <li>Existing Task 1</li>
</ul>
  • এখানে, ফর্ম জমা দেওয়ার সময় HTMX /submit-task URL-এ POST রিকোয়েস্ট পাঠাবে। সার্ভার থেকে প্রাপ্ত নতুন টাস্কটি #task-list এর শেষে যুক্ত হবে, এবং পুরো পৃষ্ঠা পুনরায় লোড হবে না।

৩. সার্ভার সাইড কোড উদাহরণ (Flask)

৩.১. Flask সার্ভার সেটআপ

আপনার Flask অ্যাপ্লিকেশনে AJAX অনুরোধ এবং Partial Page Updates পরিচালনা করার জন্য নিচের কোডটি ব্যবহার করুন:

from flask import Flask, request, render_template_string

app = Flask(__name__)
tasks = []

@app.route('/')
def index():
    return render_template_string('''
    <h1>My To-Do List</h1>
    <form hx-post="/submit-task" hx-target="#task-list" hx-swap="beforeend">
        <input type="text" name="task" placeholder="Add a new task" required>
        <button type="submit">Add Task</button>
    </form>
    
    <ul id="task-list">
        {% for task in tasks %}
            <li>{{ task }}</li>
        {% endfor %}
    </ul>
    ''')

@app.route('/submit-task', methods=['POST'])
def submit_task():
    task = request.form['task']
    tasks.append(task)
    return f'<li>{task}</li>'

if __name__ == '__main__':
    app.run(debug=True)

৪. ব্রাউজারে পরীক্ষা করা

  1. Flask সার্ভার চালান।
  2. ব্রাউজারে http://127.0.0.1:5000/ URL এ যান।
  3. টাস্ক যোগ করতে ফর্ম ব্যবহার করুন এবং দেখুন কিভাবে নতুন টাস্কটি তালিকায় যুক্ত হচ্ছে।

সারসংক্ষেপ

  • AJAX অনুরোধ: HTMX ব্যবহার করে AJAX কলের মাধ্যমে সার্ভার থেকে ডেটা লোড করা হয়।
  • Partial Page Updates: শুধুমাত্র নির্দিষ্ট অংশ আপডেট করার প্রক্রিয়া, যা ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।
  • HTMX: ডাইনামিক এবং ইন্টারঅ্যাকটিভ ওয়েব অ্যাপ্লিকেশন তৈরি করতে একটি সহজ এবং কার্যকরী উপায়।

HTMX ব্যবহার করে AJAX অনুরোধ এবং Partial Page Updates সহজেই কার্যকর করা যায়, যা ওয়েব অ্যাপ্লিকেশনগুলিকে আরো দ্রুত এবং ব্যবহারকারী-বান্ধব করে তোলে।

Content added By

AJAX এর ধারণা এবং HTMX এর মাধ্যমে AJAX কল করা

370

AJAX (Asynchronous JavaScript and XML) হলো একটি ওয়েব ডেভেলপমেন্ট কৌশল, যা পেজ রিফ্রেশ না করেই সার্ভারের সাথে ডেটা এক্সচেঞ্জ করতে সক্ষম করে। AJAX ব্যবহার করে ওয়েব অ্যাপ্লিকেশন আরও দ্রুত এবং ইন্টারঅ্যাকটিভ হয়ে ওঠে। AJAX এর মাধ্যমে পেজের নির্দিষ্ট অংশে ডেটা আপডেট করা সম্ভব, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।

AJAX এর প্রধান ধারণা

AJAX মূলত কিছু প্রযুক্তির সমন্বয় যা ওয়েব অ্যাপ্লিকেশনকে অ্যালাইভ এবং ইন্টারঅ্যাকটিভ রাখে।

  1. Asynchronous Requests: AJAX অনুরোধ সার্ভারের সাথে অ্যালাইভ বা অ্যাসিঙ্ক্রোনাসলি (সিঙ্ক্রোনাইজ না করে) পাঠানো হয়, যা ব্রাউজারের মূল পেজকে রিফ্রেশ না করেই নতুন ডেটা লোড করতে সক্ষম করে।
  2. Data Format: AJAX সাধারণত JSON, XML, HTML বা প্লেইন টেক্সট ফরম্যাটে ডেটা লোড ও প্রক্রিয়া করে।
  3. Enhanced User Experience: AJAX ব্যবহার করে পেজের নির্দিষ্ট অংশে নতুন ডেটা যোগ করে এবং পেজ রিলোডের প্রয়োজন ছাড়াই ব্যবহারকারীর জন্য স্মুথ এবং রেসপন্সিভ ইন্টারফেস তৈরি করা হয়।

HTMX এর মাধ্যমে AJAX কল করা

HTMX হল একটি HTML-Driven লাইব্রেরি, যা HTML Attribute-Based Approach ব্যবহার করে AJAX রিকোয়েস্ট তৈরি করে এবং পেজ রিফ্রেশ ছাড়াই নির্দিষ্ট অংশে ডেটা আপডেট করতে পারে। HTMX এর বিভিন্ন Attributes ব্যবহার করে সহজেই AJAX রিকোয়েস্ট করতে এবং রেসপন্স রেন্ডার করতে পারা যায়।

HTMX এর মাধ্যমে AJAX কল করার জন্য প্রধান Attribute

  1. hx-get: GET রিকোয়েস্ট তৈরি করতে ব্যবহৃত হয়।
  2. hx-post: POST রিকোয়েস্ট পাঠাতে ব্যবহৃত হয়।
  3. hx-put: PUT রিকোয়েস্ট, সাধারণত ডেটা আপডেট করতে ব্যবহৃত হয়।
  4. hx-delete: DELETE রিকোয়েস্ট, যা ডেটা মুছে ফেলার জন্য ব্যবহৃত হয়।
  5. hx-target: AJAX রিকোয়েস্ট থেকে প্রাপ্ত ডেটা HTML এর নির্দিষ্ট অংশে রেন্ডার করতে ব্যবহার করা হয়।
  6. hx-swap: ডেটা কিভাবে এবং কোথায় ইনজেক্ট হবে তা নির্দেশ করতে ব্যবহৃত হয়।

HTMX ব্যবহার করে AJAX রিকোয়েস্টের উদাহরণ

1. GET রিকোয়েস্টের মাধ্যমে ডেটা লোড করা (hx-get)

নিচের উদাহরণে, একটি বাটন ক্লিক করলে /fetch-data এ GET রিকোয়েস্ট পাঠায় এবং রেসপন্স #content div এ রেন্ডার হয়।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX AJAX GET Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Fetch Data using GET Request</h2>
    <!-- GET রিকোয়েস্টের মাধ্যমে ডেটা ফেচ করার উদাহরণ -->
    <button hx-get="/fetch-data" hx-target="#content">Load Data</button>
    <div id="content">Data will be loaded here...</div>

</body>
</html>

ব্যাখ্যা:

  • hx-get="/fetch-data": /fetch-data এ GET রিকোয়েস্ট পাঠায়।
  • hx-target="#content": রেসপন্সটি #content div এ ইনজেক্ট করা হয়।

2. POST রিকোয়েস্টের মাধ্যমে ডেটা সাবমিট করা (hx-post)

HTMX দিয়ে ফর্ম সাবমিট করার উদাহরণ, যেখানে ফর্মের ডেটা /submit-form URL এ POST করা হয়।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX AJAX POST Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Submit Data using POST Request</h2>
    <!-- POST রিকোয়েস্টের মাধ্যমে ডেটা সাবমিট করার উদাহরণ -->
    <form hx-post="/submit-form" hx-target="#result">
        <label for="name">Name:</label>
        <input type="text" id="name" name="name" required>
        <button type="submit">Submit</button>
    </form>
    <div id="result">Submission result will appear here.</div>

</body>
</html>

ব্যাখ্যা:

  • hx-post="/submit-form": /submit-form এ POST রিকোয়েস্ট পাঠায়।
  • hx-target="#result": রেসপন্স #result div এ রেন্ডার হয়।

3. PUT এবং DELETE রিকোয়েস্ট ব্যবহার করা

HTMX দিয়ে PUT এবং DELETE রিকোয়েস্ট করাও সম্ভব, যা ডেটা আপডেট বা মুছে ফেলার জন্য ব্যবহৃত হয়।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX PUT and DELETE Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Update and Delete Data</h2>

    <!-- PUT রিকোয়েস্ট -->
    <button hx-put="/update-item" hx-target="#message">Update Item</button>
    <!-- DELETE রিকোয়েস্ট -->
    <button hx-delete="/delete-item" hx-target="#message">Delete Item</button>

    <div id="message">Operation message will appear here.</div>

</body>
</html>

ব্যাখ্যা:

  • hx-put="/update-item": /update-item URL এ PUT রিকোয়েস্ট পাঠায়, যা ডেটা আপডেটের জন্য ব্যবহৃত।
  • hx-delete="/delete-item": /delete-item URL এ DELETE রিকোয়েস্ট পাঠায়, যা ডেটা মুছে ফেলার জন্য ব্যবহৃত।
  • hx-target="#message": উভয় ক্ষেত্রেই রেসপন্স #message div এ রেন্ডার হয়।

4. AJAX রেসপন্স কিভাবে রেন্ডার হবে তা নির্ধারণ করা (hx-swap)

HTMX এর hx-swap Attribute ব্যবহার করে AJAX রেসপন্স কিভাবে এবং কোথায় ইনজেক্ট হবে তা নিয়ন্ত্রণ করা যায়।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX hx-swap Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Content Swap Example</h2>

    <!-- AJAX রিকোয়েস্ট এবং hx-swap Attribute -->
    <button hx-get="/load-content" hx-target="#container" hx-swap="outerHTML">Replace Content</button>

    <div id="container">This is the original content.</div>

</body>
</html>

ব্যাখ্যা:

  • hx-swap="outerHTML": /load-content থেকে প্রাপ্ত রেসপন্স #container div এর সম্পূর্ণ HTML প্রতিস্থাপন করবে।

HTMX এর মাধ্যমে AJAX ব্যবহার করার সুবিধা

  1. JavaScript Dependency কমানো: HTMX দিয়ে HTML Attribute গুলোর মাধ্যমে সরাসরি AJAX রিকোয়েস্ট করা যায়, যা JavaScript নির্ভরতা কমায়।
  2. Faster Development: HTML এর মধ্যে Attribute-Based Approach ব্যবহার করে AJAX কল তৈরি করা সহজ এবং দ্রুত।
  3. Better User Experience: পেজ রিফ্রেশ ছাড়াই নির্দিষ্ট অংশে ডেটা আপডেট করা যায়, যা ব্যবহারকারীর অভিজ্ঞতা উন্নত করে।
  4. Flexible Data Loading Options: GET, POST, PUT, DELETE এবং অন্যান্য HTTP মেথড ব্যবহার করে AJAX রিকোয়েস্ট করা যায়।

উপসংহার

HTMX এর মাধ্যমে AJAX রিকোয়েস্ট করা খুবই সহজ এবং কার্যকর। hx-get, hx-post, hx-put, hx-delete, hx-target এবং hx-swap এর মতো Attributes ব্যবহার করে HTMX সরাসরি AJAX রিকোয়েস্ট করতে পারে এবং নির্দিষ্ট অংশে ডেটা রেন্ডার করতে পারে। AJAX ব্যবহার করে HTMX পেজের নির্দিষ্ট অংশ আপডেট করে, যা JavaScript কোড কমিয়ে ডেভেলপমেন্টকে আরও সহজ করে তোলে।

Content added By

Partial Page Update এবং HTML Component Refresh

218

Partial Page Update এবং HTML Component Refresh

Partial Page Update এবং HTML Component Refresh হল দুটি গুরুত্বপূর্ণ ধারণা, যা ওয়েব অ্যাপ্লিকেশনগুলির পারফরম্যান্স এবং ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করতে সহায়ক। HTMX এর মাধ্যমে এই দুটি ধারণা কার্যকরীভাবে বাস্তবায়ন করা যায়। নিচে এই ধারণাগুলি এবং HTMX এর সাহায্যে কিভাবে কাজ করে তা আলোচনা করা হলো।


১. Partial Page Update

১.১. বর্ণনা

Partial Page Update হল একটি প্রক্রিয়া যার মাধ্যমে একটি ওয়েব পৃষ্ঠার শুধুমাত্র নির্দিষ্ট অংশগুলি আপডেট করা হয়, সম্পূর্ণ পৃষ্ঠাটি পুনরায় লোড করার পরিবর্তে। এটি সার্ভার থেকে নতুন কন্টেন্ট লোড করে এবং DOM-এর নির্দিষ্ট এলিমেন্টে সন্নিবেশ করে।

১.২. সুবিধা

  • দ্রুত লোডিং: শুধুমাত্র পরিবর্তিত অংশ আপডেট করা হয়, যা পৃষ্ঠার লোডিং সময় কমায়।
  • ব্যবহারকারীর অভিজ্ঞতা: ব্যবহারকারীরা একটি মসৃণ এবং দ্রুত ইন্টারঅ্যাকশন অনুভব করেন, কারণ তারা পুরো পৃষ্ঠা পুনরায় লোড হতে দেখেন না।

১.৩. HTMX ব্যবহার করে Partial Page Update

HTMX ব্যবহার করে Partial Page Update করার একটি উদাহরণ:

<button hx-get="/load-content" hx-target="#content">Load Content</button>
<div id="content">
    <p>This is the initial content.</p>
</div>
  • ব্যাখ্যা: বোতামে ক্লিক করলে HTMX /load-content URL থেকে ডেটা লোড করে এবং সেটি #content ডিভে সন্নিবেশ করবে।

২. HTML Component Refresh

২.১. বর্ণনা

HTML Component Refresh হল একটি প্রক্রিয়া যার মাধ্যমে একটি নির্দিষ্ট HTML উপাদান (যেমন ডিভ, তালিকা, ফর্ম ইত্যাদি) সার্ভার থেকে নতুন তথ্য নিয়ে আপডেট করা হয়। এটি ব্যবহারকারীর দৃষ্টি আকর্ষণ করতে এবং তথ্যের সাম্প্রতিকতা নিশ্চিত করতে ব্যবহৃত হয়।

২.২. সুবিধা

  • ডাইনামিক ইন্টারফেস: ব্যবহারকারীরা তথ্যের পরিবর্তনগুলি তাত্ক্ষণিকভাবে দেখতে পারেন।
  • কনটেন্ট আপডেট: এটি ব্যবহারকারীর জন্য সর্বদা আপডেট থাকা তথ্য প্রদান করে।

২.৩. HTMX ব্যবহার করে HTML Component Refresh

HTMX ব্যবহার করে HTML Component Refresh করার উদাহরণ:

<button hx-get="/refresh-data" hx-target="#data-container">Refresh Data</button>
<div id="data-container">
    <p>Initial data here.</p>
</div>
  • ব্যাখ্যা: বোতামে ক্লিক করলে HTMX /refresh-data URL থেকে নতুন তথ্য লোড করবে এবং #data-container ডিভে সন্নিবেশ করবে।

৩. সার্ভার সাইড কোড উদাহরণ (Flask)

৩.১. Flask অ্যাপ তৈরি করুন

from flask import Flask, render_template_string

app = Flask(__name__)

@app.route('/')
def index():
    return render_template_string('''
    <h1>Partial Page Update Example</h1>
    <button hx-get="/load-content" hx-target="#content">Load Content</button>
    <div id="content">
        <p>This is the initial content.</p>
    </div>
    <button hx-get="/refresh-data" hx-target="#data-container">Refresh Data</button>
    <div id="data-container">
        <p>Initial data here.</p>
    </div>
    ''')

@app.route('/load-content')
def load_content():
    return "<p>This is the loaded content!</p>"

@app.route('/refresh-data')
def refresh_data():
    return "<p>Data refreshed at this moment!</p>"

if __name__ == '__main__':
    app.run(debug=True)

৪. ব্রাউজারে পরীক্ষা করা

  1. Flask সার্ভার চালান।
  2. ব্রাউজারে http://127.0.0.1:5000/ URL এ যান।
  3. "Load Content" বোতামে ক্লিক করলে দেখুন কিভাবে #content ডিভ আপডেট হচ্ছে।
  4. "Refresh Data" বোতামে ক্লিক করলে #data-container ডিভ আপডেট হবে।

সারসংক্ষেপ

  1. Partial Page Update: শুধুমাত্র নির্দিষ্ট অংশ আপডেট করার প্রক্রিয়া, যা দ্রুত লোডিং এবং উন্নত ব্যবহারকারীর অভিজ্ঞতা প্রদান করে।
  2. HTML Component Refresh: নির্দিষ্ট HTML উপাদানের ডেটা আপডেট করার প্রক্রিয়া, যা ব্যবহারকারীদের সর্বদা আপডেট তথ্য প্রদান করে।
  3. HTMX: HTMX ব্যবহার করে এই উভয় ধারণার কার্যকরী বাস্তবায়ন সম্ভব।

HTMX এই ধরনের কার্যকরী উপায়গুলির মাধ্যমে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়াকে সহজ করে তোলে, যা ব্যবহারকারীর জন্য একটি উন্নত অভিজ্ঞতা নিশ্চিত করে।

Content added By

Server Response এবং Content Update করা

250

HTMX ব্যবহার করে Server Response এবং Content Update পদ্ধতি খুবই সহজে কার্যকর করা যায়। HTMX সরাসরি AJAX রিকোয়েস্ট পাঠিয়ে সার্ভার থেকে প্রাপ্ত রেসপন্স HTML এর নির্দিষ্ট অংশে রেন্ডার করতে সাহায্য করে। HTMX এর hx-target এবং hx-swap Attributes এর মাধ্যমে HTML এ Content Update করা যায়।

HTMX এর মাধ্যমে Server Response এবং Content Update

নিচে HTMX ব্যবহার করে একটি উদাহরণ দেওয়া হলো যেখানে সার্ভার থেকে প্রাপ্ত রেসপন্স পেজের নির্দিষ্ট অংশে আপডেট করা হয়।

উদাহরণ: সার্ভার রেসপন্সের মাধ্যমে Content Update করা

ধরা যাক আমাদের একটি সার্ভার এন্ডপয়েন্ট /get-data আছে, যা কিছু JSON বা HTML ডেটা ফেরত পাঠায়। আমরা HTMX এর মাধ্যমে এই ডেটা পেজে লোড করব।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX Server Response Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Load Server Data</h2>
    <!-- GET রিকোয়েস্টের মাধ্যমে ডেটা ফেচ করা এবং Content Update করা -->
    <button hx-get="/get-data" hx-target="#content" hx-swap="innerHTML">Load Data</button>
    
    <div id="content">Data will be loaded here...</div>

</body>
</html>

বিঃদ্রঃ: এখানে /get-data একটি API বা সার্ভার রাউট যা HTMX এর GET রিকোয়েস্টের রেসপন্স প্রদান করবে।

hx-get, hx-target, এবং hx-swap এর ব্যবহার ব্যাখ্যা

  • hx-get="/get-data": এটি /get-data URL এ GET রিকোয়েস্ট পাঠাবে।
  • hx-target="#content": সার্ভার থেকে প্রাপ্ত রেসপন্সটি #content div এ রেন্ডার করা হবে।
  • hx-swap="innerHTML": সার্ভার রেসপন্সটি #content div এর ভেতরে innerHTML হিসেবে যোগ করা হবে, অর্থাৎ div এর ভিতরের কন্টেন্ট প্রতিস্থাপিত হবে।

সার্ভার রেসপন্স এবং Content Update এর কিছু উদাহরণ

1. সার্ভার রেসপন্স JSON ডেটা হলে

যদি সার্ভার /get-data রাউট থেকে JSON ডেটা প্রদান করে, তবে HTMX এই JSON রেসপন্স সরাসরি HTML-এ রেন্ডার করতে পারে না। এমন ক্ষেত্রে, সার্ভারে JSON কে HTML ফরম্যাটে রূপান্তর করে পাঠাতে হবে।

উদাহরণ:

{
    "name": "John Doe",
    "email": "john@example.com"
}

সার্ভার সাইড: এই JSON ডেটাকে HTML হিসেবে রেন্ডার করে পাঠানো।

<!-- Server response -->
<div>
    <p>Name: John Doe</p>
    <p>Email: john@example.com</p>
</div>

2. HTML রেসপন্স হিসেবে সার্ভার ডেটা পাঠানো

এমন ক্ষেত্রে, HTMX সরাসরি HTML রেসপন্স পায় এবং hx-targethx-swap ব্যবহার করে নির্দিষ্ট এলিমেন্টে Content Update করে।

উদাহরণ:

<!-- Server response from /get-data -->
<div>
    <h3>User Information</h3>
    <p>Name: John Doe</p>
    <p>Email: john@example.com</p>
</div>

Server-Sent Events (SSE) ব্যবহার করে রিয়েল-টাইম Content Update

HTMX এর hx-sse Attribute ব্যবহার করে সরাসরি সার্ভার-সেন্ট ইভেন্ট (SSE) এর মাধ্যমে রিয়েল-টাইম Content Update করা সম্ভব।

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTMX SSE Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script>
</head>
<body>

    <h2>Live Data Update</h2>
    <!-- SSE এর মাধ্যমে রিয়েল-টাইম আপডেট -->
    <div hx-sse="connect:/live-updates" hx-swap="innerHTML">Waiting for live updates...</div>

</body>
</html>

এখানে /live-updates রাউটটি একটি SSE এন্ডপয়েন্ট হিসাবে কাজ করবে, যা নতুন ডেটা এলেই রিয়েল-টাইমে HTML এ রেন্ডার করবে।

Content Update নিয়ন্ত্রণের জন্য hx-swap এর বিভিন্ন মান

hx-swap মানব্যাখ্যা
innerHTMLটার্গেট এলিমেন্টের ভেতরের HTML প্রতিস্থাপিত হবে
outerHTMLপুরো টার্গেট এলিমেন্ট প্রতিস্থাপিত হবে
beforebeginটার্গেট এলিমেন্টের আগে নতুন কন্টেন্ট যোগ হবে
afterendটার্গেট এলিমেন্টের পরে নতুন কন্টেন্ট যোগ হবে
beforeendটার্গেট এলিমেন্টের শেষে নতুন কন্টেন্ট যোগ হবে
afterbeginটার্গেট এলিমেন্টের শুরুতে নতুন কন্টেন্ট যোগ হবে

উপসংহার

HTMX এর hx-get, hx-post, hx-target, এবং hx-swap Attribute ব্যবহার করে Server Response পেজের নির্দিষ্ট অংশে রেন্ডার করা খুবই সহজ। Server-Sent Events ব্যবহার করে HTMX রিয়েল-টাইম Content Update করার জন্যও ব্যবহার করা যায়। HTMX এর এই Attribute গুলো HTML Attribute-Based Approach ব্যবহার করে ওয়েব পেজের নির্দিষ্ট অংশে নতুন কন্টেন্ট যোগ করার প্রক্রিয়াকে সহজ এবং কার্যকর করে।

Content added By

উদাহরণসহ AJAX রিকুয়েস্ট এবং Partial Update

240

AJAX রিকুয়েস্ট এবং Partial Update উদাহরণ

AJAX (Asynchronous JavaScript and XML) ব্যবহার করে আমরা ওয়েব পৃষ্ঠায় ডাইনামিক কন্টেন্ট লোড এবং আপডেট করতে পারি। HTMX লাইব্রেরি ব্যবহার করে AJAX রিকুয়েস্ট তৈরি করা এবং Partial Update করার প্রক্রিয়া খুব সহজ এবং কার্যকরী। নিচে AJAX রিকুয়েস্ট এবং Partial Update এর একটি উদাহরণ সহ বর্ণনা করা হলো।


১. পরিবেশ সেটআপ

১.১. HTML ফাইল তৈরি

প্রথমে একটি HTML ফাইল তৈরি করুন, উদাহরণস্বরূপ index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>AJAX Request and Partial Update Example</title>
    <script src="https://unpkg.com/htmx.org@1.8.4"></script> <!-- HTMX CDN -->
</head>
<body>
    <h1>AJAX Request and Partial Update Example</h1>
    
    <!-- Button to load content -->
    <button hx-get="/load-data" hx-target="#data-container">Load Data</button>
    <div id="data-container">
        <p>This is the initial content.</p>
    </div>

    <!-- Form to submit new data -->
    <form hx-post="/submit-data" hx-target="#data-list" hx-swap="beforeend">
        <input type="text" name="item" placeholder="Add a new item" required>
        <button type="submit">Add Item</button>
    </form>
    
    <h2>Items</h2>
    <ul id="data-list">
        <!-- New items will be added here -->
    </ul>
</body>
</html>

২. সার্ভার সাইড সেটআপ (Flask)

২.১. Python Flask ব্যবহার করে সার্ভার তৈরি করুন

একটি নতুন Python ফাইল তৈরি করুন, উদাহরণস্বরূপ app.py এবং নিচের কোডটি যুক্ত করুন:

from flask import Flask, render_template_string, request

app = Flask(__name__)

items = []

@app.route('/')
def index():
    return render_template_string('''
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>AJAX Request and Partial Update Example</title>
        <script src="https://unpkg.com/htmx.org@1.8.4"></script> <!-- HTMX CDN -->
    </head>
    <body>
        <h1>AJAX Request and Partial Update Example</h1>
        
        <button hx-get="/load-data" hx-target="#data-container">Load Data</button>
        <div id="data-container">
            <p>This is the initial content.</p>
        </div>

        <form hx-post="/submit-data" hx-target="#data-list" hx-swap="beforeend">
            <input type="text" name="item" placeholder="Add a new item" required>
            <button type="submit">Add Item</button>
        </form>
        
        <h2>Items</h2>
        <ul id="data-list">
            {% for item in items %}
                <li>{{ item }}</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    ''')

@app.route('/load-data')
def load_data():
    return "<p>This content was loaded dynamically via AJAX!</p>"

@app.route('/submit-data', methods=['POST'])
def submit_data():
    item = request.form['item']
    items.append(item)
    return f'<li>{item}</li>'  # Return new list item as response

if __name__ == '__main__':
    app.run(debug=True)

৩. সার্ভার চালানো

৩.১. টার্মিনালে সার্ভার চালান

python app.py
  • এটি আপনার Flask অ্যাপ্লিকেশনটি চালু করবে এবং এটি http://127.0.0.1:5000/ ঠিকানায় উপলব্ধ হবে।

৪. ব্রাউজারে পরীক্ষা করা

  1. ব্রাউজারে http://127.0.0.1:5000/ URL এ যান।
  2. "Load Data" বোতামে ক্লিক করুন এবং দেখুন কিভাবে নতুন কন্টেন্ট #data-container ডিভে লোড হচ্ছে।
  3. একটি নতুন আইটেম যোগ করতে ফর্মটি ব্যবহার করুন এবং "Add Item" বোতামে ক্লিক করুন। এটি নতুন আইটেমটি #data-list এ যুক্ত করবে।

সারসংক্ষেপ

  • AJAX রিকুয়েস্ট: HTMX ব্যবহার করে AJAX কলের মাধ্যমে সার্ভার থেকে নতুন কন্টেন্ট লোড করা হয়।
  • Partial Update: শুধুমাত্র নির্দিষ্ট অংশ আপডেট করার প্রক্রিয়া, যা ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।
  • Flask: Flask ব্যবহার করে সার্ভার সাইডে AJAX অনুরোধগুলি পরিচালনার সহজ প্রক্রিয়া তৈরি করা হয়েছে।

HTMX এর সাহায্যে AJAX রিকুয়েস্ট এবং Partial Update করা একটি সহজ এবং কার্যকরী পদ্ধতি, যা ওয়েব অ্যাপ্লিকেশনগুলিকে আরো দ্রুত এবং ইন্টারঅ্যাকটিভ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...