Web, View

[FrontCS] DOM...?

kaleb 2024. 3. 18. 14:13
728x90

안녕하세요 미어캣입니다.

 

제가 공부한 내용들을 보면 DOM을 간략하게나마 정의한 부분들이 있긴하지만

 

앞으로 있어 기본이지만 알아야는 할 것 같아서 기록에 남겨두려고 합니다.


 

브라우저에 띄울 웹 페이지가 단순히 정보 전달만을 목적으로 하는 정적인 웹이라면 HTML, CSS로도 충분하지만,

인터랙티브한 기능(동적인 구현)을 하고자 한다면 자바스크립트와 DOM을 반드시 써야합니다.

DOM은 웹 페이지(HTML이나 XML 문서)의 콘텐츠 및 구조, 그리고 스타일 요소를 구조화 시켜 표현하여

프로그래밍 언어가 해당 문서에 접근하여 읽고 조작할 수 있도록 API를 제공하는 일종의 인터페이스입니다.

➡️ 즉 자바스크립트 같은 스크립팅 언어가 쉽게 웹 페이지에 접근하여 조작할 수 있게끔 연결시켜주는 역할을 담당


DOM은 어떻게 생성되는가?

DOM은 웹 페이지, 즉 HTML 문서를 계층적 구조와 정보로 표현하며,  이를 제어할 수 있는 프로퍼티와 메서드를 제공하는 트리 자료구조로 존재합니다. 그래서 HTML DOM, 혹은 HTML DOM Tree 로 부릅니다.

(HTML 문서는 최종적으로 하나의 최상위 노드(root 노드)에서 시작해 자식 노드들을 가지며, 아래로만 뻗어나가는 구조)

 

다음과 같은 HTML 이 존재할 때

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title
</head>
<body>
<h2 style="color:blue">DOM 문서 객체 모델</h2>
</body>
</html>

 

다음과 같은 Tree 구조로 브라우저 단에서 이를 파싱할 때 이런식으로 트리구조로 파악합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • document node :
    DOM Tree에서 최상위 루트 노드를 나타내며, document 객체를 가리킵니다. HTML 문서 전체를 나타내는 노드 
  • element node :
    모든 HTML 요소 (body, h2, div 등)는 이 요소 노드입니다. 속성 노드를 가질 수 있는 유일한 노드 
  • text node :
    모든 HTML 요소의 속성은 이 속성 노드입니다. 요소 노드에 대한 정보 
  • attribute node :
    HTML 문서의 모든 텍스트

4가지 노드들이 존재함으로써 스크립팅 언어가 웹페이지에 접근하고 조작할 수 있게 됩니다.

특히 데이터 검색하기가 빠른 트리 구조로 이뤄져 있기 때문에 접근과 조작에 용이합니다.


자바스크립트와 DOM은 어떤 관계 ?

JS를 통해 대부분 DOM을 컨트롤하는건 웹 프론트엔드 개발의 역사에 따라

JS가 메인 스트림이 됐기 때문이지 JS가 아니더라도 파이썬, 자바 등의 언어로도 

DOM 인터페이스를 활용하면 접근할 수 있습니다.

➡️따라서 자바스크립트와 DOM은 엄밀히 다른 개념이며, 꼭 자바스크립트로만 DOM을 다룰 수 있는 것도 아닙니다.

 

감사합니다.


참고자료 : https://www.codestates.com/blog/content/dom-javascript

반응형