DOM (Document Object Model) কী?
DOM (Document Object Model) হল একটি ইন্টারফেস বা API যা HTML বা XML ডকুমেন্টের মধ্যে থাকা উপাদানগুলির সাথে JavaScript (বা অন্য ভাষা) দ্বারা যোগাযোগ করতে এবং তাদের পরিবর্তন করতে সহায়ক। এটা একটি ডাইনামিক স্ট্রাকচার যা আমাদেরকে ওয়েব পেজের বিভিন্ন অংশের (যেমন টেক্সট, ছবি, লিঙ্ক, টেবিল ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করার সুবিধা দেয়।
- DOM (ডকুমেন্ট অবজেক্ট মডেল) হলো একটি প্রোগ্রামিং ইন্টারফেস যা HTML বা XML ডকুমেন্টকে একটি ট্রি স্ট্রাকচার (গাছের মতো কাঠামো) হিসেবে উপস্থাপন করে। এই ট্রি স্ট্রাকচারে ডকুমেন্টের প্রতিটি এলিমেন্ট (যেমন ট্যাগ, টেক্সট, অ্যাট্রিবিউট) একটি নোড (Node) হিসেবে বিবেচিত হয়। DOM এই নোডগুলোকে অবজেক্ট আকারে রূপান্তরিত করে, যাতে প্রোগ্রামিং ল্যাঙ্গুয়েজ (যেমন JavaScript) দিয়ে ডকুমেন্টের সাথে ইন্টারঅ্যাক্ট করা যায়।
DOM কেন প্রয়োজন?
- ডাইনামিক ওয়েব পেজ তৈরি করা: DOM আমাদের পেজের উপাদানগুলিকে রানটাইমে পরিবর্তন করার সুযোগ দেয়। উদাহরণস্বরূপ, ব্যবহারকারী যখন কোনো বোতামে ক্লিক করে, তখন DOM ব্যবহার করে আমরা পেজের কন্টেন্ট পরিবর্তন করতে পারি।
- HTML স্ট্যাটিক (স্থির)। DOM এর মাধ্যমে JavaScript দিয়ে পেজের কন্টেন্ট, স্টাইল, বা স্ট্রাকচার রিয়েল-টাইমে পরিবর্তন করা যায় (যেমন বাটন ক্লিক করলে টেক্সট বদলানো)।
- উদাহরণ: সোশ্যাল মিডিয়া ফিডে নতুন পোস্ট লোড হওয়া।
-
ইন্টারঅ্যাকটিভিটি: DOM এর মাধ্যমে পেজের বিভিন্ন উপাদান (যেমন ফর্ম, বোতাম, লিঙ্ক) নিয়ে কাজ করা যায়। এটি ওয়েব পেজকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারীর জন্য কার্যকর করে তোলে।
-
রিয়েল-টাইম আপডেট: DOM ব্যবহার করে আমরা পেজে কোনো পরিবর্তন করতে পারি (যেমন নতুন ডেটা যোগ করা, পুরোনো ডেটা পরিবর্তন করা) কোনো পেজ রিফ্রেশ ছাড়াই। এই কারণে ওয়েব পেজ রিয়েল-টাইম আপডেট করতে পারে।
-
ক্রস-প্ল্যাটফর্ম সাপোর্ট: DOM একটি স্ট্যান্ডার্ডাইজড মডেল (W3C দ্বারা নির্ধারিত)। এটি যেকোনো ব্রাউজারে (Chrome, Firefox, Safari) এবং যেকোনো প্রোগ্রামিং ল্যাঙ্গুয়েজে (JavaScript, Python, Java) কাজ করে।
-
এক্সেসিবিলিটি ও SEO: স্ক্রিন রিডার বা সার্চ ইঞ্জিন (যেমন Google) DOM ব্যবহার করে ওয়েব পেজের কন্টেন্ট বুঝতে পারে।
DOM কিভাবে কাজ করে?
DOM একটি হিরারকিকাল স্ট্রাকচার হিসাবে কাজ করে, যেখানে HTML ডকুমেন্টের প্রতিটি উপাদান একটি “নোড” হিসেবে গণ্য হয়। এই নোডগুলির মধ্যে সম্পর্ক থাকে, এবং তারা একে অপরের সাথে যুক্ত থাকে একটি গাছের (Tree) মতো। DOM এই গাছের শাখা, পাতা, মূল ইত্যাদি ধারণ করে এবং JavaScript এর মাধ্যমে আমাদেরকে এই গাছের নোডগুলির সাথে ইন্টারঅ্যাক্ট করার সুযোগ দেয়।
DOM এর কাজের ধাপগুলো:
- HTML লোডিং: যখন ব্রাউজার একটি HTML ডকুমেন্ট লোড করে, তখন এটি প্রথমে DOM তৈরি করে।
- HTML কে DOM এ রূপান্তর: HTML ট্যাগগুলো (যেমন
<h1>
,<p>
,<a>
, ইত্যাদি) DOM এ নোড হিসেবে রূপান্তরিত হয়। - নোডের সাথে কাজ: JavaScript বা অন্য স্ক্রিপ্টিং ভাষা DOM এর এই নোডগুলির উপর কাজ করতে পারে, যেমন কোনো টেক্সট পরিবর্তন করা বা নতুন এলিমেন্ট যোগ করা।
DOM কিভাবে কাজ করে?
১. পার্সিং (Parsing): ব্রাউজার HTML ফাইল পড়ে এবং তা একটি DOM ট্রি তে রূপান্তরিত করে। উদাহরণ: এটি DOM ট্রিতে পরিণত হয়:
Document
└── html
├── head
│ └── title (text: "Example")
└── body
├── h1 (text: "Hello")
└── p (text: "World")
২. রেন্ডারিং (Rendering): ব্রাউজার DOM ট্রি এবং CSS ব্যবহার করে ভিজ্যুয়াল পেজ তৈরি করে (যা ইউজার দেখে)। ৩. ম্যানিপুলেশন (Manipulation): JavaScript DOM এর মাধ্যমে নোডগুলোকে অ্যাক্সেস, মডিফাই, অ্যাড, বা ডিলিট করতে পারে। উদাহরণ:
// h1 এলিমেন্ট খুঁজে টেক্সট বদলানো
document.querySelector("h1").textContent = "Hi!";
পরিবর্তন হলে ব্রাউজার অটোমেটিক্যালি পেজটি রি-রেন্ডার করে। ৪. ইভেন্ট হ্যান্ডলিং (Event Handling): ইউজারের অ্যাকশন (যেমন ক্লিক) DOM এ ইভেন্ট হিসেবে রেকর্ড হয়। JavaScript এই ইভেন্টগুলো লিসেন করে এবং প্রয়োজনীয় অ্যাকশন নেয়। উদাহরণ:
document.querySelector("button").addEventListener("click", () => {
alert("Button clicked!");
});
DOM কি JavaScript এর অংশ?
DOM JavaScript এর একটি অংশ নয়, তবে JavaScript এর মাধ্যমে DOM কে ম্যানিপুলেট করা সম্ভব। JavaScript হল ভাষা যা DOM কে হ্যান্ডল করার জন্য ব্যবহৃত হয়। অর্থাৎ, JavaScript এর মাধ্যমে DOM এর উপাদানগুলির সাথে যোগাযোগ করা এবং তাদের পরিবর্তন করা যায়। JavaScript ছাড়া, DOM কোনো কাজ করতে পারে না।
যেমন:
document.getElementById('example')
— DOM থেকে নির্দিষ্ট আইডি দ্বারা একটি উপাদান নির্বাচন করা হয়।-
document.querySelector('p')
— DOM থেকে প্যারাগ্রাফ এলিমেন্ট নির্বাচন করা হয়। - ব্রাউজারের JavaScript ইঞ্জিন (যেমন
V8
) DOM এর জন্য API প্রদান করে (যেমনdocument
,window
অবজেক্ট)। - অন্যান্য ল্যাঙ্গুয়েজ (যেমন Python) ও DOM ব্যবহার করতে পারে (যেমন
BeautifulSoup
লাইব্রেরি)।
উদাহরণ:
// একটি প্যারাগ্রাফ এলিমেন্ট নির্বাচন করা
let para = document.getElementById("demo");
// এই প্যারাগ্রাফের টেক্সট পরিবর্তন করা
para.innerHTML = "নতুন টেক্সট";
এই উদাহরণে, getElementById()
এবং innerHTML
ফাংশনগুলি JavaScript এর মাধ্যমে DOM ম্যানিপুলেট করার উপায়।
DOM এর গুরুত্বপূর্ণ উপাদানগুলি:
- নোড: HTML ডকুমেন্টের প্রতিটি উপাদান একটি নোড।
- ডকুমেন্ট অবজেক্ট: এটি মূল গাছের (Root node) উপাদান এবং অন্যান্য নোডগুলির সাথে সম্পর্ক স্থাপন করে।
- এলিমেন্ট নোড: HTML ট্যাগগুলি (যেমন
<h1>
,<p>
) যা ডকুমেন্টের অংশ। - টেক্সট নোড: ট্যাগের মধ্যে থাকা টেক্সট কন্টেন্ট।
- DOM ≠ JavaScript: DOM হলো একটি মডেল, আর JavaScript হলো একটি প্রোগ্রামিং ল্যাঙ্গুয়েজ।
- ব্রাউজারের ভূমিকা: ব্রাউজার DOM ট্রি তৈরি করে এবং JavaScript কে এটি নিয়ন্ত্রণ করার অনুমতি দেয়।
- Node.js এ DOM নেই: Node.js (সার্ভার-সাইড JavaScript) তে DOM API নেই, কারণ এটি ব্রাউজারের বাইরে কাজ করে।
উপসংহার:
DOM হল একটি গুরুত্বপূর্ণ প্রযুক্তি যা JavaScript এবং অন্যান্য ভাষাগুলিকে ওয়েব পেজের উপাদানগুলির সাথে কাজ করার ক্ষমতা দেয়। এটা ওয়েব পেজকে আরও ইন্টারঅ্যাকটিভ এবং ডাইনামিক করতে সাহায্য করে। JavaScript ছাড়া DOM কার্যকরী নয়, তবে JavaScript ডকুমেন্টের এলিমেন্টগুলির সাথে যোগাযোগ ও পরিবর্তন করার প্রধান উপায়।