DOMと仮想DOMは、どちらも「ブラウザ上でHTMLを表現・操作する仕組み」に関連していますが、役割や仕組みが異なります。
DOMとは
DOMとは、HTMLやXMLの文書構造をオブジェクトツリーとして表現したものを指します。
ブラウザはHTMLを読み込み、DOMツリーを生成します。
開発者はこのDOMツリーをJavaScriptから操作して、ページの内容や見た目を動的に変更できます。
特徴
標準仕様で、全ブラウザがサポート
直接操作すると、すぐに画面に反映される
大規模な変更や頻繁な更新では、パフォーマンスが悪くなる場合がある(再計算や再描画コストが高い)
仮想DOMとは
仮想DOMとは、DOMツリーの軽量なコピーをメモリ上に持ち、変更を効率的に行う仕組みを指します。
直接DOMを操作するのではなく、仮想DOM(JavaScriptオブジェクトとして表現されたツリー)を先に更新。
更新後、仮想DOMと**前の仮想DOMを比較(差分検出: diffing)して、必要最小限の操作だけを実DOMに適用します。
仮想DOMはブラウザが提供する機能ではなく、ライブラリが内部的に実現している仕組みです。
特徴
直接DOMを触るより効率的
変更が多いUIでも高速に動作しやすい
宣言的な書き方ができ、コードがシンプルになる
メモリ消費や初期化コストが多少増える
まとめ
DOMは「そもそもブラウザが持つ構造」であり、仮想DOMは「効率的にDOMを更新するために使うテクニック」です。