[css] DOM 이란?

DOM

DOM이란?

W3C의 레퍼런스를 보면 다음과 같이 작성되어 있다.

The DOM is a W3C (World Wide Web Consortium) standard.
The DOM defines a standard for accessing documents:

“The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document.”

The W3C DOM standard is separated into 3 different parts:

Core DOM - standard model for all document types
XML DOM - standard model for XML documents
HTML DOM - standard model for HTML documents

DOM이란 Document Object Model의 줄임말로, HTML과 XML문서의 내용, 구조, 스타일을 조작하고 나타낼 수 있게 해주는 API이다.
브라우저 가 HTML파일을 파싱하여 DOM tree 로 만들어주어, 문서(HTML파일)을 구조화해서 표현해준다.

W3C의 설명에 의하면,
The HTML DOM is a standard object model and programming interface for HTML. It defines:

정리하자면 DOM은 표준 객체모델이자 다른 프로그램(스크립트 언어 및 다른 프로그래밍 언어)을 위한 HTML/XML의 인터페이스 이며,

📌 파싱이란?

문장을 그것을 이루고 있는 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정하는 것.
일련의 문자열을 의미있는 토큰으로 분해하여 이들로 이루어진 parse tree를 생성하는 것이다.
파서는 파싱을 실행하는 프로그램 모듈!

📌 API란?

Application Programming Interface의 약자.
일반적으로 Interface 란 무언가를 조작하기 위한 디자인으로, 예를 들어 키보드와 스크린은 사람이 컴퓨터를 조작할 수 있도록 해주는 둘 사이의 접점이다.
그리고 Programming Interface 는 한 프로그램이 다른 프로그램을 이용할 때 쓰는 인터페이스이다. 이를 통해 프로그램간의 커뮤니케이션이 가능해진다.

API의 예로,
카카오톡 친구에게 게임 친구추가 메세지를 보내고 싶다면 게임이 카카오톡 메세지 전송 기능에 접근 및 사용할 수 있도록 카카오톡 API를 사용 할 것이다.

이처럼 API의 역할을 하는 DOM은, 자바스크립트 및 프로그래밍 언어들이 DOM구조에 접근할 수 있는 방법을 제공해준다.

📌 설명에 노드와 객체가 혼용되어 쓰이는데 뭐가 뭐지?🙄

스택오버플로우에 영어로 나와있는 설명이 직관적이고 이해가 잘 되어있어서 덧붙인다.
Node interface is the primary datatype for the entire Document Object Model.
A node is the generic name for any type of object in the DOM hierarchy. A node could be one of the built-in DOM elements such as document or document.body, it could be an HTML tag specified in the HTML such as <input> or <p> or it could be a text node that is created by ㄴthe system to hold a block of text inside another element. So, **a node is any DOM object.**

An element is one specific type of node as there are many other types of nodes (text nodes, comment nodes, document nodes, etc…).

The DOM consists of a hierarchy of nodes where each node can have a parent, a list of child nodes and a nextSibling and previousSibling.

한마디로 요약하자면 node는 DOM의 각 객체들의 데이터 타입과 같은 것이다. 객체들을 node로 표현할 수 있는 것이다.

DOM이 하는 일


참고 URL

책 자바스크립트 완벽가이드
Difference between Node object and Element object?
파싱,파서
JavaScript HTML DOM
[용어 뜻/설명] API란?
MDN-DOM 소개
MDN-문서 객체 모델 (DOM)