์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- async-await
- arr.push()
- ๋ฐฐ์ด ์ต์๊ฐ
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฆ๋๋ ์๊ณ ๋ฆฌ์ฆ
- array.reduce()
- ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ
- ES6 ๋ธ๋ผ์ฐ์ ์ง์ ํํฉ
- JavaScript
- ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
- Math.min
- ์ด๋ ค์ด๋ฐใ ใ
- ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์๋ฐฐ๊ฒฝ
- ํ๋ก๊ทธ๋๋ฐ์ด๋
- for๋ฌธ
- ์๋ฐ์คํฌ๋ฆฝํธ
- .split()
- a && b
- ์ผํญ์ฐ์ฐ์
- .map()
- ์์ค๋ฆ~
- ํ๋ ฌ...
- for๋ฐ๋ณต๋ฌธ
- !x.includes()
- Ajax๋?
- ํ๋ก๊ทธ๋๋จธ์ค ๊ณต์ ์ฐ์ฑ
- Promise.all()
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript
- ๊ฐ์ฐ์ค์ ๊ณต์
Archives
- Today
- Total
Ming's develop story
DOM ์ ๊ฐ๋ ๋ณธ๋ฌธ
DOM (Document Object Model)์ด๋?
- ๋งํฌ์ ์ธ์ด๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด(ex. Javascript)๊ฐ ์กฐ์ํ ์ ์๋๋ก ํ๋ ์ธํฐํ์ด์ค
- DOM์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๋ ธ๋ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ค.
DOM์ ์ข ๋ฅ
- HTML DOM: HTML ๋ฌธ์๋ฅผ ์กฐ์ํ๋ API
- XML DOM: XML ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ ํํ๋ก ๋ค๋ฃฐ ์ ์๋ API
- SVG DOM: SVG ๊ทธ๋ํฝ์ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋ API
DOM์ ์ ํ์ํ๊ฐ?
- ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ๊ตฌํํ๋ ค๋ฉด ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๋ฌธ์์ ์ ๊ทผํ๊ณ , ์ ์ดํ ์ ์๋ ์๋จ์ด ์์ด์ผ ํ์ง๋ง ๋งํฌ์ ์ธ์ด์๋ element์ ์ ๊ทผ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
DOM์ ํตํด ์ด๋ค ๋์์ ํ ์ ์๋๊ฐ?
- ์์ ์กฐ์: ๋ฌธ์ ๋ด์์ ์์๋ฅผ ์ถ๊ฐ(appendChild), ์ ๊ฑฐ(removeChild), ์์ ๊ฐ๋ฅ
- ์์ฑ(Attribute) ์กฐ์: setAttribute, getAttribute ๋ฑ์ ํ์ฉํ์ฌ ์์์ ์์ฑ์ ๋ณ๊ฒฝ
- CSS ์คํ์ผ ์กฐ์: element.style ๋๋ classList.add/remove ๋ฑ์ ์ฌ์ฉํด ์คํ์ผ ๋ณ๊ฒฝ
- ์ด๋ฒคํธ ์ฒ๋ฆฌ: addEventListener๋ฅผ ์ด์ฉํด ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐ ๊ฐ๋ฅ
DOM์ ์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ก ํํํ๋๊ฐ?
- ๋ ธ๋๋ค ๊ฐ์ ๊ด๊ณ(๋ถ๋ชจ, ์์, ํ์ )๋ฅผ ๋ช ํํ ์ ์ํ ์ ์์.
- Event ์ฒ๋ฆฌ์ ์ ๋ฆฌํ ๊ตฌ์กฐ์ด๋ค.
- ๋ ธ๋์ ์ถ๊ฐ, ์ ๊ฑฐ, ์ด๋ ์์ ์ ์ฝ๊ฒ ํ ์ ์๋๋ก ํด์ค.
- ์ด๋ฒคํธ ์ ํ(Event Propagation) ์ฒ๋ฆฌ๊ฐ ๊ณ์ธต ๊ตฌ์กฐ์์ ํจ์จ์ ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ.
- ์บก์ฒ๋ง (Capturing Phase): ์ด๋ฒคํธ๊ฐ ์ต์์ ์์์์ ํ๊ฒ ์์๋ก ๋ด๋ ค๊ฐ.
- ํ๊ฒ ๋จ๊ณ (Target Phase): ์ค์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์์์ ์คํ๋จ.
- ๋ฒ๋ธ๋ง (Bubbling Phase): ์ด๋ฒคํธ๊ฐ ๋ค์ ์์ ์์๋ก ์ฌ๋ผ๊ฐ.
๐ก event.stopPropagation()์ ์ฌ์ฉํ๋ฉด ์ด๋ฒคํธ ์ ํ๋ฅผ ์ค๋จํ ์ ์์.
DOM์ ์ฃผ์ ๊ฐ์ฒด
- document: HTML ๋ฌธ์๋ฅผ ๋ํ๋ด๋ ์ต์์ ๊ฐ์ฒด
- window: ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ํ๋ด๋ ๊ฐ์ฒด, document๋ window ๊ฐ์ฒด์ ์์ฑ
- element: DOM์์ HTML ์์๋ฅผ ๋ํ๋ด๋ ๊ฐ์ฒด (getElementById(), querySelector() ๋ฑ์ผ๋ก ์ ๊ทผ)
- node: ๋ชจ๋ ์์, ์์ฑ, ํ ์คํธ๋ฅผ ํฌํจํ๋ ์ต์์ ๊ฐ๋ (Element, Text, Comment ๋ฑ ํฌํจ)
DOM ์กฐ์ ์ ์ฑ๋ฅ ์ต์ ํ
- DOM ์กฐ์ ์ต์ํ: documentFragment๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋ฒ์ ์ฌ๋ฌ ์์๋ฅผ ์ถ๊ฐ
- reflow/repaint ์ต์ํ: ์ฌ๋ฌ ์คํ์ผ ๋ณ๊ฒฝ ์ classList๋ฅผ ํ์ฉํ์ฌ ํ ๋ฒ์ ์ ์ฉ
- Virtual DOM ํ์ฉ: React ๋ฑ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Virtual DOM์ ์ฌ์ฉํด ์ฑ๋ฅ ์ต์ ํ
'D E V E L O P ๐ป > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธฐ(Synchronous), ๋น๋๊ธฐ(Asynchronous) (0) | 2025.02.14 |
---|---|
Promise๋?(feat. async-await, Promise.all()) (0) | 2025.02.12 |
Comments