私は普段の業務の中で、どちらかというとサーバーサイド, DBレイヤ寄りの実装を行う事が多く、クライアント周りの知識が乏しいです。
それでも依頼されれば簡易的なJSの実装を行ったりはしますが、いまいちDOMという概念を自分の中で明確に言語化できていないまま、雰囲気でDOM操作をしたりしていました。
さすがに、Webエンジニアを自称する人間としてDOMとは何なのかくらいは自分の言葉で説明できる必要があるなと思い、学習・執筆に至った次第です。
DOM(Document Object Model)
は、Webページの構造をプログラムで操作できるようにしたインターフェースです。
簡単に言うと、「HTMLやXML文書をプログラムで扱うための設計図」です。
ドキュメントオブジェクトモデル (DOM) - Web API | MDN
なるほど、ではDOMという概念が存在する事で、我々開発者はどのようなメリットを享受できるんでしょうか。
DOMが存在する事で、以下のようなメリットを享受できます。
文書の構造を表現する
DOMはウェブページのHTMLやXMLをツリー構造として表現します。
これによってページは構造化され、各要素(例:見出し、段落、画像など)にアクセスしやすくします。
プログラマブルになる
JavaScriptなどのプログラム言語で、HTMLやCSSを変更したり操作したりするために、DOMが使われます。
例えば、ボタンをクリックしたときに、特定のテキストを変更することができます。
動的なウェブページを実現する
DOMを通じて、JavaScriptで要素を追加、削除、変更することで、インタラクティブで動的なウェブページが作れます。
DOMは、ツリー構造(階層構造)で表現されます。このツリーはノード(Node)
という単位で構成されています。