DOM์ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ด๋ฉฐ ๋ฐํ์ ๋๋ค. Element, Document, Window ์ค๋ธ์ ํธ์์ ๋ฐ์ํ๋, ๋ฐ์์ํค๋ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ณธ๋ถํฐ ํ์ฉ๊น์ง ๋ค๋ฃน๋๋ค. Web Component(Custom Element, Shadow DOM, Template)์ ์์ ํ๊ฒ ๋ฐฐ์ธ ์ ์์ผ๋ฉฐ ํ์ฉํ ์ ์์ต๋๋ค. ๊ฐ์ค๋ "DOM ์์ ๋๋ด๊ธฐ: ๊ธฐ๋ณธ" ๊ฐ์ข์ ๋๋ถ์ด DOM์ ๋ง์นจํ๋ฅผ ์ฐ์ ์ ์์ต๋๋ค.
Element, Document, Window์ ๋ชจ๋ ์ด๋ฒคํธ
Web Components: Custom Element, Shadow DOM, <template>
Clip Board, Drag & Drop, Mutation Observer
DOM + Web Component
๊ทผ๋ณธ์ ๋ฌ๋ฆฌํด์ผ ํ๋ฆ์ด ๋ณด์
๋๋ค.
์ฌ์ฉ์ ์ค์ฌ์ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌํํ๋ ค๋ฉด ์ฌ์ฉ์์ ํ๋์ ์ธ์ํด์ผ ํฉ๋๋ค. Element, Document, Window ์ค๋ธ์ ํธ์์ ๋ฐ์ํ๊ฑฐ๋ ๋ฐ์์ํค๋ ๋ชจ๋ DOM ์ด๋ฒคํธ๋ก ์ด๋ฅผ ํ ์ ์์ต๋๋ค.
Web Component๋ HTML, CSS, DOM ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์กฐํฉํ ์ปดํฌ๋ํธ ๊ฐ๋ฐ์ ๋ฐํ์ ๋๋ค. ์ด ํ๋ฆ์ ์ ๋๋ก ์์์ผ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฌ๊ณ ๋ฅผ ๋ํ ์ ์์ต๋๋ค.
๊น๊ณ ๋์ผ๋ฉด์ ์์ธํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด, 3๊ฐ ๊ฐ์๋ก ๋ถ๋ฆฌํ์ฌ ๋ค๋ฃน๋๋ค.
ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ๊ทผ๋ณธ ๊ธฐ์ ์ ๋ชฉ๋ง๋ผ ์์ง๋ ์์๋์? ์ฌ๋ฌ๋ถ์ด ๋ฐ๋๋ผ ์ฝ๋ฉ์ผ๋ก ๋์ ์น ํ๋ก๊ทธ๋จ์ ์จ์ ํ๊ฒ ๊ฐ๋ฐํ ์ ์๋ค๋ฉด, ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ๋ฅผ ๋ชจ๋ฅด๋๋ผ๋ ๋ฐฐ์ฐ๋ ๋ฐ ๊ทธ๋ค์ง ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ต๋๋ค. ๊ฐ์์์ ๋ฐฐ์ฐ๋ ๋ด์ฉ ์ญ์ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ/ํ๋ ์์ํฌ์ ๋ฐํ์ด ๋ฉ๋๋ค.
DOM์ ๋์ฑ ์ฝ๊ณ , ์์ ํ๊ฒ ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ค๋ ๊ฐ๋ฐ์, ์ด๋ฒคํธ์ ๋ชจ๋ ๊ฒ์ ์๊ณ ์ถ์ ๊ฐ๋ฐ์์ด์ ๊ฐ์? ์ด ๊ฐ์๋ก ๊ทผ๋ณธ๋ถํฐ ๋ฌ๋ผ์ง๋ ๊ฒฝํ์ ํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.
DOM ์คํ์ 95% ์ด์์ ๋ค๋ฃน๋๋ค. DOM์ ๋ง์นจํ๋ฅผ ์ฐ์ ์ ์์ต๋๋ค.
๋๊ณ (Wide), ๊น์ผ๋ฉฐ(Deep), ์์ธ(Detail)ํฉ๋๋ค. ์๊ฐ, ๋น์ฉ, ๋
ธ๋ ฅ์ ํ๋นํ์ง ์์ต๋๋ค.
๊ฐ์๋ฅผ ๊ฐ๋ฐํ ๋๋ง๋ค ํญ์ ์๊ตฌ์ฌํญ์ ๋ํ ๊ตฌํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํ๊ฒ ๋ฉ๋๋ค. ๊ตฌํ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ค๋ฉด ์ฐ์ ์ง์ํ๋ ๊ฒ(๋ฉ์๋, ํ๋กํผํฐ ๋ฑ)์ ์์์ผ ํฉ๋๋ค.
์ด์ "์๋ฐ์คํฌ๋ฆฝํธ ์์ ๋๋ด๊ธฐ" ์๋ฆฌ์ฆ๋ ๊ทธ๋ ์ง๋ง, ์ด๋ฒ ๊ฐ์ ์ญ์ DOM ์ธํฐ๋์ ์คํ์ 95% ์ด์์ ๋ค๋ฃน๋๋ค. ์ง๋ "DOM ์์ ๋๋ด๊ธฐ: ๊ธฐ๋ณธ" ๊ฐ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ด๋ ๊ฒ ๋ด์ฉ์ ์์ ํ๊ฒ ๋ค๋ฃจ๋ ค๋ฉด ์ค๋ ฅ๊ณผ ๊ฒฝํ์ด ์๋ ๊ฐ์์๊ฐ ์๊ฐ์ ๋ง์ด ๋ค์ฌ ๊ฐ์๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฐ์์์ ์ฌ์ ์ด๊ณ , ํ์ต์๋ ์ ์ฒด๋ฅผ ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค.
"DOM ์์ ๋๋ด๊ธฐ" ๊ฐ์ 2ํธ์ ๋ง๋๋ ๋ฐ 1๋ ๋๊ฒ ๊ฑธ๋ ธ์ต๋๋ค. 70% ์ ๋๋ง ๋ค๋ค๋ค๋ฉด ํจ์ฌ ๋ ์งง์ ์๊ฐ ์์ ๊ฐ์๋ฅผ ๋ง๋ค ์ ์์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง๋ง ์ด๋ ๊ฒ ๋๋ฉด ๊ฐ์์ ์ ์ฅ์์๋ง ํธํ ๋ฟ, ํ์ต์๋ ๋๋จธ์ง 30%๋ฅผ ์ฑ์ฐ๊ธฐ ์ํ ๋ ธ๋ ฅ์ ๋ง์ ์๊ฐ์ ์์์ผ ํฉ๋๋ค. ๋ฌธ์ ๋, ์ด 30%์ ํด๋นํ๋ ๊ฒ ๋ฌด์์ธ์ง ๋ชจ๋ฅธ๋ค๋ ์ฌ์ค์ ๋๋ค.
ํ์ต์ ์ฌ๋ฌ๋ถ์ด DOM์ ์ ์ฒด๋ฅผ ๋ณด๊ณ , ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๊ณ ๋ฅผ ๋ํ ์ ์๋๋ก 95%๋ผ๋ ์์น์ ๊ณ ์ํ๋ฉฐ ์ค๋ ์๊ฐ ์ค๋นํ ๊ฐ์๋ผ๊ณ ์์ ํฉ๋๋ค.
์ธํฐํ์ด์ค์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ๋น ๋จ๋ฆฌ์ง ์๊ธฐ ์ํด, ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ์ธํฐํ์ด์ค์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ฒดํฌ ๋ฆฌ์คํธ ํํ๋ก ๋ง๋ค์์ต๋๋ค.
์ด ๋ฆฌ์คํธ๋ PDF ํ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์น์ [HTMLElement ์ธํฐํ์ด์ค] ์ฒซ ๋ฒ์งธ ์์ ์์ ์๋ฃ๋ฅผ ๋ด๋ ค๋ฐ์ ํ์ธํ์ค ์ ์์ต๋๋ค.
ํ๋กํผํฐ, ๋ฉ์๋ ๊ฐ์์์ ๋งค์น ๋ฆฌ์คํธ
์๋ฆฌ์ฆ ์ ์ฒด๊ฐ ํ๋์ ์๋๋ฆฌ์ค์ ๋๋ค. ๊ธฐ๋ฅ์ ์ธ์ฐ๋ ๊ฒ ์๋๋ผ ์ ์ฒด์ ๊ฐ์ ์ก๋ ํํ์ ๋๋ค. ์์๋๋ก ํ๋์ฉ ๋ฐ๋ผ์ค์๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ ์ฒด๋ฅผ ๋ฐฐ์ธ ์ ์์ต๋๋ค. ๋ด์ฉ์ด ์ค๋ณต๋์ง ์์ผ๋ฏ๋ก ์ด์ ๋ฐ๋ฅธ ๋ ธ๋ ฅ, ์๊ฐ, ๋น์ฉ์ ํ๋นํ์ง ์์ต๋๋ค. ๊ฐ์๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ์ฒ, ๋๋ฌด, ๊ฐ์ง, ๊ฝ์ ๋๋ฃจ ๋ณด๋ฉฐ ๊ธฐ๋ณธ์ ๊น์ด๋ฅผ ํผํผํ๊ฒ ๋ค์ง ์ ์์ต๋๋ค.
๊ฐ์ค๋ 4๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ํจ๊ป ์น ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ด ๋๋ ๊ธฐ๋ฐ ๊ธฐ์ ์ ์์ ํ๊ฒ ๋ง์นจํ๋ฅผ ์ฐ์ ์ ์์ต๋๋ค. ์ด๋ฒคํธ, ํ๋กํผํฐ, ๋ฉ์๋ ํ๋๋ฅผ ๊น๊ณ ๋๊ฒ ๋ค๋ฃจ์ง๋ง, ๋๋ถ์ด ์ด๊ฒ์ด ์คํ๋๋ ์๋ค์ ์ฝ๋๋ฅผ ์๋๋ฆฌ์ค๋ก ๋ง๋ค์ด ๋ค๋ฃน๋๋ค.
40๋ ๋๊ฒ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํด ์จ ๊ฒฝํ, ์๊ฐ์ด ์ง๋์ผ ๋น๋ก์ ๋๋ ์ ์๋ ๊ฐ๊ฐ์ ์ธ ๊ฒ, ๋๋ฌผ์ ๊ฐ๊ฐ์ด ๋ ๊ฒ์ ๊ฐ์์ ๋ด์์ต๋๋ค.
DOM ๊ฐ์๋ HTML, CSS, DOM, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฐ๊ฒฐ๋ ํํ์ ๋๋ค. ๋๋ฌธ์ ์ด๋ฒคํธ, ํ๋กํผํฐ, ๋ฉ์๋ ํ๋๋ฅผ ์ค๋ช ํ๋ ค๋ฉด 10~30๋ผ์ธ์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ผ์ด๋ธ๋ก ์ฝ๋ฉํ๋ฉด ์๊ฐ์ ์ค๋ ๊ฑธ๋ฆฌ๊ณ ํ์ต์๋ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ ์ ์ฝ๋ฉ๋ ์ฝ๋๋ฅผ ์ ์ํ๊ณ ์ค๋ช ํฉ๋๋ค. ๊ทธ ์ดํ์๋ ์ฌ๋ฌ๋ถ์ด ์ง์ ์ฝ๋ฉ์ ์๋ฃํด์ผ ์ ์ฒด๋ฅผ ๋ณผ ์ ์๊ณ ํ๋ฆ์ ํ์ ํ ์ ์์ต๋๋ค. ์น ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง์ถฐ ์ ์ฉํ ์ ์๋๋ก ์ค๋ ฅ์ด ํฅ์๋ฉ๋๋ค. ๊ฐ์์์๋ ์๋ค ๊ธฐ๋ณธ ์ฝ๋๋ฅผ ์ ๊ณตํ๋ฏ๋ก ์ด๋ฅผ ํ์ฉํด ๋ถ๋ถ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ ๋๋ค.
๐พ ์ค์ต ํ๊ฒฝ ๋ฐ ํ์ต ์๋ฃ
Q. "DOM ์์ ๋๋ด๊ธฐ: ๊ธฐ๋ณธ" ๊ฐ์๊ฐ ์๋๋ฐ ๊ทธ ๊ฐ์๋ฅผ ๋จผ์ ๋ค์ด์ผ ํ๋์?
๋ฃ์ง ์์๋ ์๊ฐํ ์ ์์ต๋๋ค๋ง, ์ด ๊ฐ์์์๋ DOM ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋ค๋ฃจ์ง ์์ผ๋ฏ๋ก ๋ฃ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ฐ์๋ฅผ ์์ ํ๊ฒ ์ดํดํ์ง ๋ชปํ๊ฑฐ๋ ๋ด์ฉ์ด ์ฐ๊ฒฐ๋์ง ์์ ์๋ ์์ต๋๋ค. ์คํ์ ์์ฑ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก ์๋ ค์ง ์ฉ์ด์ ๋ค๋ฅธ ๊ฒ๋ ์์ ์ ์์ต๋๋ค.
Q. ๊ฐ์๋ฅผ ๋ฃ๊ธฐ ์ ์ ์์์ผ ํ ๋ด์ฉ์ด ์๋์?
HTML, ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ์ ์์ ์ผ ํฉ๋๋ค. CSS๋ ๋ค๋ฃจ์ง ์์ผ๋ฏ๋ก ๋ชจ๋ฅด์ ๋ ๋ฉ๋๋ค.
Q. DOM์ ์ฒ์ ์ ํ๋ ๋น๊ธฐ๋์ธ๋ฐ ์๊ฐ์ด ๊ฐ๋ฅํ ๊น์?
DOM์์ ์ฌ์ฉํ๋ ์ฉ์ด, ๊ฐ๋ ์ด ์์ต๋๋ค. ์ด๋ฅผ "DOM ์์ ๋๋ด๊ธฐ: ๊ธฐ๋ณธ"์์ ๋ค๋ฃจ๊ณ ์์ผ๋ ๊ทธ ๊ฐ์๋ฅผ ๋จผ์ ๋ค์ผ์๊ธฐ ๋ฐ๋๋๋ค.
Q. DOM์ ๋ฐฐ์ฐ๋ฉด ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์น ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋์?
HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์๋ฉด ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ก๋๋งต ๋ฐ๋ก๊ฐ๊ธฐ (40% ํ ์ธ)
DOM ๋ก๋๋งต ๋ฐ๋ก๊ฐ๊ธฐ (40% ํ ์ธ)
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
๋์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐ์ฐ๋ ค๋ ๊ฐ๋ฐ์
์ด๋ฒคํธ์ ๋ชจ๋ ๊ฒ์ ๋ฐฐ์ฐ๋ ค๋ ๊ฐ๋ฐ์
์ฌ์ฉ์ ์ค์ฌ์ UI/UX๋ฅผ ๊ตฌํํ๋ ค๋ ๊ฐ๋ฐ์
์ ์ ์ง์,
ํ์ํ ๊น์?
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์
DOM ๊ธฐ๋ณธ
9,428
๋ช
์๊ฐ์
363
๊ฐ
์๊ฐํ
332
๊ฐ
๋ต๋ณ
4.8
์
๊ฐ์ ํ์
12
๊ฐ
๊ฐ์
์ํํธ์จ์ด ๊ฐ๋ฐ์ ์ข์ํ๋ ๊ฐ๋ฐ์์ ๋๋ค.
๋ฉ์ผ: tonextday@gmail.com
๋์์: 12๊ฐ
ํด๋ฆฐ์
์๋ฐ์คํฌ๋ฆฝํธ: ์ ํ์
ํด๋ฆฐ์
์๋ฐ์คํฌ๋ฆฝํธ: ๋ฒ ์ด์ค ๋น๋์
์๋ฐ์คํฌ๋ฆฝํธ ๋น๊ธฐ๋, ์๋ฐ์คํฌ๋ฆฝํธ ์ค๊ณ ๊ธ
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ(ES6+) ๊ธฐ๋ณธ, ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ(ES6+) ์ฌํ
DOM ๊ธฐ๋ณธ, DOM ์ธํฐ๋์
React ๋น๊ธฐ๋, React ์์ ๋๋ด๊ธฐ
์๊ตฌ๋ถ์ ๊ตฌํ ๋ฐฉ๋ฒ
์๋ฐ์คํฌ๋ฆฝํธ ๋จธ์ ๋ฌ๋ TensorFlow.js
์ ์: 9๊ถ
๋ชฐ์
! ์๋ฐ์คํฌ๋ฆฝํธ
ECMAScript 6
HTML5
DOM ์คํฌ๋ฆฝํ
์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ทํํ์
์๊ตฌ๋ถ์์ ์ํ Event Process ๋ชจ๋ธ๋ง
๋จธ์ ๋ฌ๋ TensorFlow.js,
Ajax ํ์ฉ, prototype.js ์์ ๋ถ์
9๊ถ ์ค์์ 8๊ถ์ ๊ตญ๋ด ์ต์ด ์ ์์
๋๋ค.
ํนํ, "๋จธ์ ๋ฌ๋ TensorFlow.js JavaScript"๋ ์ถํํ๋ ์์ ์ amazon.com์ ๊ด๋ จ๋ ์ฑ
์ด ์์์ต๋๋ค.
์ ์ฒด
131๊ฐ โ (21์๊ฐ 3๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต: