DOM 문서 객체 모델

2020. 2. 21. 20:29·Web/Javascript

0. Web Rendering

텍스트 파일로 만들어져 있는 웹 문서를 브라우저에 렌더링하려면 웹 문서를 브라우저가 이해할 수 있는 구조로 메모리에 올려야 한다. 브라우저의 렌더링 엔진(ex. V8 in Chrome)은 웹 문서를 로드한 후, 파싱하여 웹 문서를 브라우저가 이해할 수 있는 구조로 구성하여 메모리에 적재하는데 이를 DOM이라 한다. 즉 모든 요소와 요소의 어트리뷰트, 텍스트를 각각의 객체로 만들고 이들 객체를 부자 관계를 표현할 수 있는 트리 구조로 구성한 것이 DOM Tree이다. 이 DOM은 자바스크립트를 통해 동적으로 변경할 수 있으며 변경된 DOM은 렌더링에 반영된다.

1. 정의

넓은 의미: 웹 브라우저가 HTML 페이지를 인식하는 방식

좁은 의미: document 객체와 관련된 객체의 집합.

 

2. 용도

javascript에서 html 태그들을 'Object' 화하여 조작하는 것.

정적 -> 동적 문서 객체 생성이 가능해짐. (최초 javascript의 태동 원인)

 

HTML의 태그 == 문서 객체 == 노드 

 

 

 

3. 소스코드와 DOM Tree 구성도 살펴보기

 

document 객체를 통해서 h1태그 (요소 노드)와 "Juit Jitsu" (텍스트 노드) 객체를 생성했다.

다음과 같은 구성을 띤다.

h1태그가 적용된 Juit Jitsu 라는 글자는 나오지 않는다. (문서에 직접 연결되지 않은 상태)

h1과 Juit Jitsu가 Document Object에 연결되있지 않은 상태.

 

문서 객체에 h1 노드 요소와 Juist Jitsu 텍스트 요소를 연결해보자.

 

 

body 태그에 직접 입력하여 Document 노드를 생성하는 것을 "정적 객체 생성" 이런식으로 Document객체를 활용하여 생성하는 것을 "동적 객체 생성"이라한다.
h1자손에 Juit Jitsu 텍스트 노드가 붙었고 body 자손에 h1을 붙여였다!

 

저작자표시 (새창열림)

'Web > Javascript' 카테고리의 다른 글

Window 브라우저 객체  (0) 2020.02.27
[javascript] style property handling error  (0) 2020.02.22
[JavaScript] 배열 특정원소 삭제  (0) 2020.01.26
[Javascript] typeof vs constructor  (0) 2020.01.25
Javascript Prototype  (0) 2020.01.24
'Web/Javascript' 카테고리의 다른 글
  • Window 브라우저 객체
  • [javascript] style property handling error
  • [JavaScript] 배열 특정원소 삭제
  • [Javascript] typeof vs constructor
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • 기타 (70)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • 잡동사니 (27)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Kotlin
    kafka
    ubuntu
    JPA
    PostgreSQL
    프로그래머스
    C++
    알고리즘
    android
    linux
    algorithm
    Bitcoin
    Git
    database
    백준
    java
    Spring
    docker
    Programmers
    javascript
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
DOM 문서 객체 모델
상단으로

티스토리툴바