웹 도메인 특히 프론트엔드 쪽에서 DOM이라는 용어를 자주 봤다.
(React에서의 Virtual DOM이라느니 DOM 객체라느니 등등)
대충은 이해하고 있다고 생각하고 있지만 DOM이 뭐냐고 물어보면 대답하기가 참 어렵다.
MDN에서는 아래와 같이 정의한다.
DOM은 HTML, XML 문서의 프로그래밍 interface이다.
(출처 : MDN - https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Introduction)
그런데 이게 무슨 말인지 알아먹을 수가 없다.
아래와 같이 정의하면 조금 알아 먹을 수 있으려나
"HTML 문서를 프로그래밍적으로 접근하고 조작하기 위한 인터페이스"
여기서 인터페이스는 문서를 접근하고 조작하기 위한 createElement, getElementById 와 같은 API를 포함하는 의미로 사용(객체지향에서의 Interface가 아님)
그런데 이걸 아무리 봐도 Virtual DOM에서의 DOM과는 거리가 좀 있어보인다. Virtual DOM은 실제 메모리에 올라간 객체를 의미하는 것 같았다.
그래서 한참을 고민하다가 다음과 같은 결론에 도달했다.
DOM이라는 용어는 MDN에서 정의한 의미로 사용되기도 하고, 브라우저가 HTML 문서를 파싱해서 메모리에 올린 객체들을 지칭하기 위해서도 사용된다.
즉, "문서를 조작하기 위한 객체들" 이라고 생각하면 될 것 같다.
DOM 트리, DOM 객체라는 용어도 "문서를 조작하기 위한 객체들" 이라는 의미로 사용되는 것 같다.
정리하자면 DOM은 아래 두 가지의 의미로 사용되는 것 같다.
1. 개념적인 의미인 "HTML 문서를 프로그래밍적으로 접근하고 조작하기 위한 인터페이스"
2. 구현체를 의미하는 "문서를 접근하고 조작하기 위한 객체들"
두 번째 의미로 사용하고 싶으면 DOM 트리나 DOM 객체라는 용어를 사용하면 조금 더 좋지 않을까?
'Web > Web 전반' 카테고리의 다른 글
[CSS] 유틸리티 클래스에 대하여 (0) | 2025.03.09 |
---|---|
express.js self signed SSL 인증서 적용 (0) | 2025.02.27 |
open SSL을 이용한 self signed SSL 인증서 발급 (0) | 2025.02.27 |
[날짜 관련] 트러블 슈팅 (1) | 2025.02.09 |
CORS와 cookie sameSite (0) | 2025.01.20 |