[WEB] BOM๊ณผ DOM(feat.DOM Tree, DOM API)

์†Œ์ด๋ށยท2023๋…„ 8์›” 29์ผ
0

My Web

๋ชฉ๋ก ๋ณด๊ธฐ
3/4
post-thumbnail

๐ŸŒˆ ํ•™์Šต์„ ์œ„ํ•ด Must-Know-About-Frontend์—์„œ ๊ฐ€์ ธ์˜จ ๋‚ด์šฉ์„ ์ˆ˜์ •, ์ถ”๊ฐ€ํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ๋‚ด์šฉ๊ณผ ๋Œ€๋ถ€๋ถ„ ์œ ์‚ฌํ•˜๋ฉฐ Summary ๋ถ€๋ถ„์€ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Summary

์„ค๋ช…
์นดํ…Œ๊ณ ๋ฆฌ์›น ๋ธŒ๋ผ์šฐ์ € ๊ด€๋ จ ๊ฐ์ฒด๋ชจ๋ธ
BOM๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์ด๋‚˜ ํ”„๋ ˆ์ž„์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋ชจ๋ธ(window)
DOM์›นํŽ˜์ด์ง€๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋ชจ๋ธ(Node)



BOM (Browser Object Model)

๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์ด๋‚˜ ํ”„๋ ˆ์ž„์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋ชจ๋ธ ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์˜ ์ƒˆ ์ฐฝ์„ ์—ด๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ ์ด๋™ํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ์ „์—ญ๊ฐ์ฒด๋กœ window ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•˜์œ„ ๊ฐ์ฒด๋“ค๋กœ location , navigator , document , screen , history ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.


DOM (Document Object Model)

์›นํŽ˜์ด์ง€๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ์ฒด๋ชจ๋ธ ์ด๋‹ค. ์ตœ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ Node๊ฐ€ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜

์œ„์˜ ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์—˜๋ฆฌ๋จผํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ์™€ ์ฃผ์„๋„ ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฐ ๊ฒƒ๋“ค๊นŒ์ง€๋„ DOM ํŠธ๋ฆฌ์— ํฌํ•จ๋œ๋‹ค. ์‹ค์ œ์ ์ธ DOM ํŠธ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ๋œ๋‹ค.

<!DOCTYPE html>
<html>
  <head>
    <title>์ œ๋ชฉ</title>
  </head>
  <body>
  <div class="ํด๋ž˜์Šค"></div>
  <!-- ์ฃผ์„ -->
  <a href="https://naver.com">๋„ค์ด๋ฒ„</a>
  </body>
</html>

Live DOM Viewer ๋ฅผ ์‚ฌ์šฉํ•ด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•ด ๋ณธ๊ฒƒ์œผ๋กœ ์—˜๋ฆฌ๋จผํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ…์ŠคํŠธ ๋…ธ๋“œ์™€ ์ฃผ์„ ๋…ธ๋“œ๊นŒ์ง€ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. ์ด์ œ ์ด๋Ÿฐ DOM์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„  getElementsById , querySelector , firstElementChild ๋“ฑ๊ณผ ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ œ๊ณตํ•˜๋Š” DOM API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.


DOM vs. DOM Tree vs. DOM API

  • DOM
    DOM์€ ์›น ํŽ˜์ด์ง€์˜ ๋ฌธ์„œ ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์„ ๊ฐ์ฒด๋กœ ๋‚˜ํƒ€๋‚ด์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ชจ๋ธ์ด๋‹ค. HTML ๋˜๋Š” XML ๋ฌธ์„œ์˜ ๊ฐ ์š”์†Œ์™€ ๋…ธ๋“œ๋ฅผ ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. DOM์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋Š” Node์ด๋‹ค.

  • DOM Tree
    DOM Tree๋Š” ์›น ํŽ˜์ด์ง€์˜ ๋ฌธ์„œ ๊ตฌ์กฐ๋ฅผ ๊ณ„์ธต์ ์ธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์ด๋‹ค. ์ด ํŠธ๋ฆฌ๋Š” ์›น ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ์š”์†Œ์™€ ๋…ธ๋“œ๋“ค์„ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋กœ ํ‘œํ˜„ํ•˜๋ฉฐ, ์›น ํŽ˜์ด์ง€์˜ ๊ตฌ์กฐ์™€ ๋‚ด์šฉ์„ ์‹œ๊ฐํ™”ํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค. DOM Tree์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋Š” document(HTML ๋ฌธ์„œ ์ „์ฒด๋ฅผ ๋‚˜ํƒ€๋ƒ„)์ด๋‹ค.

  • DOM API
    DOM API๋Š” DOM์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค. DOM API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€์˜ ์š”์†Œ๋“ค์„ ์„ ํƒํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DOM API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, document.getElementById()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ DOM API์˜ ์ผ๋ถ€์ด๋‹ค.

์ฐธ๊ณ 

0๊ฐœ์˜ ๋Œ“๊ธ€