๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Javascript

DOM ์ดํ•ด ํ•˜๊ธฐ

by memeseo 2022. 1. 13.

๐Ÿ”Ž  DOM(Document Object Model) ?

: XML๊ณผ HTML ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค.

 

Web API๋กœ ๋ธŒ๋ผ์šฐ์ € ์›น ๋ฌธ์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Œ.

๐Ÿ”Ž  Web API?

API (web or XML page) = DOM + JS (scripting language)

 

์˜ˆ์‹œ)

const contentBox = document.querySelector('.contentBox');
document.style.backgroundColor = 'red';
const innerHeight = document.innerHeight;

 

DOM์˜ ๋…ธ๋“œ๋“ค ์ค‘์—์„œ ํŠน์ • ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ , ์„ ํƒํ•œ ๋…ธ๋“œ์˜ ์ƒ‰์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ viewport์˜ ๋†’์ด๋ฅผ ์ฐพ๋Š” ๋“ฑ DOM์„ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆฝํŠธ ๋ฉ”์„œ๋“œ๋“ค์„ Web API๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ๋ฉ”์„œ๋“œ๋“ค์€ window ์ตœ์ƒ์œ„ ๊ฐ์ฒด์— ๋‹ด๊ฒจ์ ธ ์žˆ๋‹ค.

 

๐Ÿ”Ž  DOM์˜ ๊ฐœ์ฒด ๊ตฌ์กฐ

: DOM์€ ์›๋ณธ HTML ๋ฌธ์„œ์˜ ๊ฐ์ฒด ๊ธฐ๋ฐ˜ ํ‘œํ˜„ ๋ฐฉ์‹์ด๋ฉฐ ๊ฐœ์ฒด ๊ตฌ์กฐ๋Š” ๋…ธ๋“œ ํŠธ๋ฆฌ (ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ์ค„๊ธฐ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž์‹ ๋‚˜๋ญ‡๊ฐ€์ง€, ๋‚˜๋ญ‡์žŽ๋“ค์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋‚˜๋ฌด์™€ ๊ฐ™์€ ๊ตฌ์กฐ)๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

์˜ˆ์ œ)

<!DOCTYPE html>
<html lang="en">
  <head>
    <title> My first web page </title>
  </head>
  <body>
    <h1> Hello, world! </h1>
    <p> How are you? </p>
  </body>
</html>

 

์œ„ ๋ฌธ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋…ธ๋“œ ํŠธ๋ฆฌ๋กœ ํ‘œํ˜„ ๋œ๋‹ค.

 

 

! DOM์ด HTML ๋ฌธ์„œ๋กœ๋ถ€ํ„ฐ ์ƒ์„ฑ๋˜์ง€๋งŒ ๊ฐ™์€ ๊ฐœ๋…์€ ์•„๋‹˜.

 

 

๐Ÿ”Ž  ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ํ๋ฆ„

*webkit ๋ Œ๋”๋ง ์—”์ง„ ๊ธฐ์ค€

์ „์ฒด์ ์ธ ํ๋ฆ„

 

 

1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—์„œ HTML๊ณผ ์ •์  ํŒŒ์ผ์„ ๋ฐ›์•„์˜จ๋‹ค.

2. ๋ Œ๋”๋ง ์—”์ง„์ด ๊ฐ€์ ธ์˜จ HTML๊ณผ ์ •์  ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•œ๋‹ค.

 

 

 

3. ๋ Œ๋”๋ง ์—”์ง„์ด ํŒŒ์‹ฑํ•œ ํ›„์—๋Š” HTML๊ณผ ์ •์  ํŒŒ์ผ ๊ฐ์ž๋ฅผ DOM Tree์™€ CSSOM Tree๋กœ ๋งŒ๋“ ๋‹ค.

4. ๋ Œ๋”๋ง ์—”์ง„์ด Attachment ํ•œ ํ›„, Render Tree๋ฅผ ๋งŒ๋“ ๋‹ค.

5. Layout์€ Render Tree์˜ ์š”์†Œ๋“ค์— ์ž…๋ ฅ๋œ style rule๋Œ€๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ viewport๋‚ด์— ๊ทธ๋ ค์งˆ ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์น˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. *viewport : ๊ทธ๋ž˜ํ”ฝ์ด ํ‘œ์‹œ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์˜์—ญ

6. Layout ์ž‘์—…์ด ๋๋‚œ Render Tree๊ฐ€ ๋ Œ๋”๋ง ์—”์ง„์— ์˜ํ•ด ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๊ทธ๋ ค์ง„๋‹ค.

 

Render Tree ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ ์„œ ๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€ (?)

 

โœ”  ์‚ฌ์šฉ์ž๊ฐ€ ์š”์†Œ์˜ ์Šคํƒ€์ผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์•ก์…˜์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์„ ๊ฒฝ์šฐ

-> Layout๊ณผ Paint ์ž‘์—… ์‹คํ–‰ ํ›„ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด์ด๊ฒŒ ๋จ.

 

โœ”  ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋Š” ์ž‘์—…์ด๋‚˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์„ ๋ฐœ์ƒ์‹œํ‚จ ๊ฒฝ์šฐ

-> DOM Tree๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ทธ๋ฆผ.

 

๊ฒฐ๋ก 

1. HTML์„ ์ž‘์„ฑํ•˜๋ฉด ๋‹จ์ˆœํ•œ ์–ธ์–ด์ผ ๋ฟ์ด๊ณ  ๋ธŒ๋ผ์šฐ์ €์˜ ํ•ด์„์„ ๊ฑฐ์ณ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋œ ๊ฑธ DOM์ด๋ผ๊ณ  ํ•œ๋‹ค.

(์›น ์‚ฌ์ดํŠธ์—์„œ F12 ๋ˆ„๋ฅธ ๋’ค Elementsํƒญ์— ๊ฐ€๋ฉด ๋‚˜์˜ค๋Š” ์ฝ”๋“œ๋“ค์ด DOM)

2. HTML๊ณผ DOM์€ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค.

 

 

 

์ฐธ๊ณ 

https://d2.naver.com/helloworld/59361

https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction?hl=ko