์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- REACT
- position
- fetch API
- Flex
- ๋ฐ๋ธ์ฝ์ค
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋จธ์ค
- Props
- history api
- ์๋ฐ์คํฌ๋ฆฝํธ
- Gatsby
- CSS
- ๋ธ๋ก๊ทธ
- useRef
- float
- ์ฝ๋ฉํ ์คํธ
- ๋ฐ๋ธ์ฝ์ค3๊ธฐ
- useEffect
- ํ๋ก ํธ์๋
- Today
- Total
Daehyunii's Dev-blog
39์ฅ DOM(๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ) ๋ณธ๋ฌธ
39์ฅ DOM(๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ)
Daehyunii 2022. 7. 28. 17:44๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ธ DOM์ ์์ฑํ๋ค. DOM์ HTML ๋ฌธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ํํํ๋ฉฐ ์ด๋ฅผ ์ ์ดํ ์ ์๋ API, ์ฆ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ค.
39.1 ๋ ธ๋
39.1.1 HTML ์์์ ๋ ธ๋ ๊ฐ์ฒด
HTML ์์๋ HTML ๋ฌธ์๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ๋ณ์ ์ธ ์์๋ฅผ ์๋ฏธํ๋ค. HTML ์์๋ ๋ ๋๋ง ์์ง์ ์ํด ํ์ฑ๋์ด DOM์ ๊ตฌ์ฑํ๋ ์์ ๋ ธ๋ ๊ฐ์ฒด๋ก ๋ณํ๋๋ค. ์ด๋ HTML ์์์ ์ดํธ๋ฆฌ๋ทฐํธ๋ ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ก, HTML ์์์ ํ ์คํธ ์ปจํ ์ธ ๋ ํ ์คํธ ๋ ธ๋๋ก ๋ณํ๋๋ค.
<div(์์ํ๊ทธ) class(์ดํธ๋ฆฌ๋ทฐํธ ์ด๋ฆ) = "greeting"(์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ)>Hello(์ฝํ ์ธ )</div>(์ข ๋ฃํ๊ทธ)
HTML ๋ฌธ์๋ HTML ์์๋ค์ ์งํฉ์ผ๋ก ์ด๋ค์ง๋ฉฐ, HTML ์์๋ ์ค์ฒฉ ๊ด๊ณ๋ฅผ ๊ฐ๋๋ค. ์ฆ, HTML ์์์ ์ฝํ ์ธ ์์ญ์๋ ํ ์คํธ๋ฟ๋ง ์๋๋ผ HTML ์์๋ ํฌํจํ ์ ์๋ค. ์ด๋ HTML ์์ ๊ฐ์๋ ์ค์ฒฉ ๊ด๊ณ์ ์ํด ๊ณ์ธต์ ์ธ ๋ถ์๊ด๊ณ๊ฐ ํ์ฑ๋๋ค. ์ด๋ฌํ HTML ์์๊ฐ์ ๋ถ์ ๊ด๊ณ๋ฅผ ๋ฐ์ํ์ฌ HTML ๋ฌธ์์ ๊ตฌ์ฑ ์์์ธ HTML ์์๋ฅผ ๊ฐ์ฒดํํ ๋ชจ๋ ๋ ธ๋ ๊ฐ์ฒด๋ค์ ํธ๋ฆฌ ์๋ฃ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ๋ค.
ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ
ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ ๋ ธ๋๋ค์ ๊ณ์ธต ๊ตฌ์กฐ๋ก ์ด๋ค์ง๋ค. ์ฆ, ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ ๋ถ๋ชจ ๋ ธ๋์ ์์ ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ด ๋ ธ๋ ๊ฐ์ ๊ณ์ธต์ (๋ถ์, ํ์ )๋ฅผ ํํํ๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋งํ๋ค. ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ ํ๋์ ์ต์์ ๋ ธ๋์์ ์์ํ๋ค. ์ต์์ ๋ ธ๋๋ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์ผ๋ฉฐ ๋ฃจํธ ๋ ธ๋๋ผ ํ๋ค. ๋ฃจํธ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋๋ค. ์์ ๋ ธ๋๊ฐ ์๋ ๋ ธ๋๋ฅผ ๋ฆฌํ ๋ ธ๋๋ผ ํ๋ค. ์ด๋ฌํ ๋ ธ๋ ๊ฐ๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ DOM์ด๋ผ ํ๋ค. (DOM ํธ๋ฆฌ)
39.1.2 ๋ ธ๋ ๊ฐ์ฒด์ ํ์
DOM์ ๋ ธ๋ ๊ฐ์ฒด์ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋๋ค. ๋ ธ๋ ๊ฐ์ฒด๋ ์ข ๋ฅ๊ฐ ์๊ณ ์์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค. ๋ ธ๋ ๊ฐ์ฒด๋ ์ด 12๊ฐ์ ์ข ๋ฅ๊ฐ ์๋ค.
๋ฌธ์ ๋ ธ๋
๋ฌธ์ ๋ ธ๋๋ DOM ํธ๋ฆฌ์ ์ต์์์ ์กด์ฌํ๋ ๋ฃจํธ ๋ ธ๋๋ก document ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. document ๊ฐ์ฒด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ๋๋งํ HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ก ์ ์ญ ๊ฐ์ฒด window์ documnet ํ๋กํผํฐ์ ๋ฐ์ธ๋ฉ๋์ด ์๋ค. ๋ฌธ์ ๋ ธ๋๋ ๋ฃจํธ ๋ ธ๋๋ก DOM ํธ๋ฆฌ์ ๋ ธ๋๋ค์ ์ ๊ทผํ๊ธฐ ์ํ ์ง์ ์ ์ญํ ์ ๋ด๋นํ๋ค. ์ฆ, ์์, ์ดํธ๋ฆฌ๋ทฐํธ, ํ ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ ค๋ฉด ๋ฌธ์ ๋ ธ๋๋ฅผ ํตํด์ผ ํ๋ค.
์์ ๋ ธ๋
์์ ๋ ธ๋๋ HTML ์์๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ค. ์์ ๋ ธ๋๋ HTML ์์ ๊ฐ์ ์ค์ฒฉ์ ์ํด ๋ถ์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด ๋ถ์ ๊ด๊ณ๋ฅผ ํตํด ์ ๋ณด๋ฅผ ๊ตฌ์กฐํ ํ๋ค.
์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋
์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ HTML ์์์ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ค. ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ ์ดํธ๋ฆฌ๋ทฐํธ๊ฐ ์ง์ ๋ HTML ์์์ ์์ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ค. ๋จ ์ฃผ์ํด์ผ ํ ์ ์ ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ ๋ถ๋ชจ๋ ธ๋๊ฐ ์๊ณ ์์ ๋ ธ๋์ ํ์ ๋ ธ๋๋ ์๋๋ค. ๋จ์ง ์์ ๋ ธ๋์๋ง ์ฐ๊ฒฐ๋์ด ์์ ๋ฟ์ด๋ค. ๋ฐ๋ผ์ ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋์ ์ ๊ทผํ์ฌ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ์ฐธ์กฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋จผ์ ์์ ๋ ธ๋์ ์ ๊ทผํด์ผ ํ๋ค.
ํ ์คํธ ๋ ธ๋
ํ ์คํธ ๋ ธ๋๋ HTML ์์์ ํ ์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๋ค. ์์ ๋ ธ๋๊ฐ ๋ฌธ์์ ๊ตฌ์กฐ๋ฅผ ํํํ๋ค๋ฉด ํ ์คํธ ๋ ธ๋๋ ๋ฌธ์์ ์ ๋ณด๋ฅผ ํํํ๋ค๊ณ ํ ์ ์๋ค. ํ ์คํธ ๋ ธ๋๋ ์์ ๋ ธ๋์ ์์ ๋ ธ๋์ด๋ฉฐ, ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฆฌํ ๋ ธ๋๋ค. ํ ์คํธ ๋ ธ๋๋ DOM ํธ๋ฆฌ์ ์ต์ข ๋จ์ด๋ค. ๋ฐ๋ผ์ ํ ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ ค๋ฉด ๋จผ์ ๋ถ๋ชจ ๋ ธ๋์ธ ์์ ๋ ธ๋์ ์ ๊ทผํด์ผ ํ๋ค.
39.1.3 ๋ ธ๋ ๊ฐ์ฒด์ ์์ ๊ตฌ์กฐ
DOM์ HTML ๋ฌธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ํํํ๋ฉฐ, ์ด๋ฅผ ์ ์ดํ ์ ์๋ DOM API, ์ฆ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ค. DOM์ ๊ตฌ์ฑํ๋ ๋ ธ๋ ๊ฐ์ฒด๋ ์์ ์ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ์ ์ดํ ์ ์๋ DOM API๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๋ ธ๋ ๊ฐ์ฒด๋ ์์ ์ ๋ถ๋ชจ, ํ์ , ์์์ ํ์ํ ์ ์์ผ๋ฉฐ, ์์ ์ ์ดํธ๋ฆฌ๋ทฐํธ์ ํ ์คํธ๋ฅผ ์กฐ์ํ ์๋ ์๋ค.
HTMLHtmlE.. | |||||
Document > | HTMLDocumnet | HTMLHeadE.. | |||
Element > | HTMLElement > | HTMLMetaE.. | |||
Object > | EventTarget > | Node > | Attr | HTMLLinkE.. | |
CharacterData > | Text | HTMLScriptE.. | |||
comment | HTMLBodyE.. | ||||
HTMLUListE.. | |||||
HTMLLIE.. |
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ ๋ ธ๋ ๊ฐ์ฒด๋ Object, EventTarget, Node ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ๋ฌธ์ ๋ ธ๋๋ Domument, HTMLDocument ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๊ณ ์ดํธ๋ฆฌ๋ทฐํธ ๋ ธ๋๋ Attr, ํ ์คํธ ๋ ธ๋๋ CharacterData ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๊ฐ ์์๋ฐ๋๋ค.
์์ ๋ ธ๋๋ Element ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋๋ค. ๋ํ ์์ ๋ ธ๋๋ ์ถ๊ฐ์ ์ผ๋ก HTMLElemnet์ ํ๊ทธ์ ์ข ๋ฅ๋ณ๋ก ์ธ๋ถํ๋ HTMLHtmlElement, HTMLHeadElement...๋ฑ์ ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋๋ค.
๊ฒฐ๊ตญ DOM์ HTML ๋ฌธ์์ ๊ณ์ธต์ ๊ตฌ์กฐ์ ์ ๋ณด๋ฅผ ํํํ๋ ๊ฒ์ ๋ฌผ๋ก ๋ ธ๋ ๊ฐ์ฒด์ ์ข ๋ฅ, ์ฆ ๋ ธ๋ ํ์ ์ ๋ฐ๋ผ ํ์ํ ๊ธฐ๋ฅ์ ํ๋กํผํฐ์ ๋ฉ์๋์ ์งํ์ธ DOM API๋ก ์ ๊ณตํ๋ค. ์ด DOM API๋ฅผ ํตํด HTML์ ๊ตฌ์กฐ๋ ๋ด์ฉ ๋๋ ์คํ์ผ ๋ฑ์ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๋ค๋ ๊ฒ์ด ์ ์ผ ํต์ฌ์ ์ธ ๋ด์ฉ์ด๋ค.
'๐ Language & CS knowledge > JavaScript (๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
44์ฅ REST API(โป๋จ์ ๊ฐ๋ ๋ง ์ ๋ฆฌ) (0) | 2022.07.29 |
---|---|
42์ฅ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.07.29 |
38์ฅ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ (0) | 2022.07.28 |
37์ฅ Set๊ณผ Map (0) | 2022.07.28 |
36์ฅ ๋์คํธ๋ญ์ฒ๋ง ํ ๋น (0) | 2022.07.28 |