ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณต์กํ ๊ฐ๋ฐ์ ํจ์จ์ ์ผ๋ก ํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ด ๋ง๋ค์ด๋ ์ฝ๋๋ผ๋ ๊ณตํต์ ์ด ์๋ค.
์ฐจ์ด์ ์, ํ๋ ์์ํฌ๋ ๋ง๋ค์ด๋ ์ฝ๋์ ์ ํด์ง ํ(frame)์์์๋ง ์๋์ ์ผ๋ก ์์ (work)ํด์ผ ํ์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ์์ ์ ์งํํ ๋ ํ์ํ ๊ธฐ๋ฅ์ ์ฐพ๊ณ (library) ๋ฅ๋์ ์ผ๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ฐ๋ฐ์ ์๋ฆฌ์ ๋น์ ํ๋ฉด, ํ๋ ์์ํฌ๋ ๋ชจ๋ ๋๊ตฌ๊ฐ ๊ฐ์ถฐ์ง ์ฃผ๋ฐฉ์ด๋ค. ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ฏธ ๋ง๋ จํด๋์ ์ฃผ๋ฐฉ์ ๋ค์ด๊ฐ ์ ๊ณต๋๋ ๋๊ตฌ๋ง์ ์ฌ์ฉํด์ผ ํ๋ฉฐ ๋ค๋ฅธ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ค.
๋ฐ๋ฉด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ค์ด ๋์ ๋๊ตฌ ๊ฐ๊ฐ์ ์๋ฏธํ๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ๋ด๊ฐ ์๋ฆฌํ๋ ์ฃผ๋ฐฉ์์ ํ์ํ ๋๊ตฌ๋ค์ ๋ชฉ์ ๊ณผ ์ฉ๋์ ๋ฐ๋ผ์ ์
๋ง์ ๋ง๊ฒ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค.
์ฆ, ํ๋ ์์ํฌ๋ ์ ์ฒด์ ์ธ ํ๋ฆ์ ์ด๋ฏธ ์์ฒด์ ์ผ๋ก ๊ฐ์ง๊ณ ์์ด ๊ฐ๋ฐ์๊ฐ ๊ทธ ํ๋ฆ์ ๋ง๊ฒ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ํ๋ฆ์ ๊ฐ์ง๊ณ ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ค.
์ด๋ฌํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋ก ํธ์๋์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ์ธ ๊ฐ์ง๊ฐ Angular, Vue, React์ด๋ค.
์ต๊ทค๋ฌ์ ๋ทฐ๋ ํ๋ ์์ํฌ์ด๋ฉฐ, ๋ฆฌ์กํธ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ง๋ง ํ๋ ์์ํฌ ์ ์ธ ํน์ง์ ์ผ๋ถ ๊ฐ์ง๊ณ ์๋ค.
๋ฆฌ์กํธ๋ ์๊ธฐ๋ง์ ๋ฌธ๋ฒ์ ๊ฐ์ง ์ต๊ทค๋ฌ๋ ๋ทฐ์๋ ๋ค๋ฅด๊ฒ ๋๋ถ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ํ์ฉํ๋ค.
๋ํ ํ์ด์ค๋ถ์ ์ง์์ ์ธ ๊ด๋ฆฌ์ ํจ๊ป ์ํ๊ณ๊ฐ ํ์ฑํ๋์ด ์์ด, ์ฌ์ฉ์๊ฐ ๋ง๊ณ ์ปค๋ฎค๋ํฐ๊ฐ ๋ฐ๋ฌํด ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ๋ฆฌ์กํธ๋ฅผ ํ์ฉํ๋ฉด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ๋ฐฉ์์ ์ฝ๊ฒ ์ฐพ์๋ณผ ์ ์๊ณ , ์ด๋ ๊ณง ๊ฐ๋ฐ์์ ์์ฐ์ฑ์ ํฅ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค.
์ด๋ฌํ ์ด์ ๋ค๋ก ๋ฆฌ์กํธ๋ ํ์ฌ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
React๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๋ง๋ค๊ธฐ ์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ค.
๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ํฐ ์ด์ ์ค ํ๋๋ UI๋ฅผ ์๋์ผ๋ก ์
๋ฐ์ดํธ ํด์ค๋ค๋ ์ ์ด๋ค.
์ด๋ก ์ธํด ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ ์ ์ธ์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํด์ง๋ฉฐ, ์๋์ผ๋ก UI๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ณผ์ ์์ Virtual DOM(๊ฐ์ ๋)์ ํตํด ์ต์ ํ๋ ์
๋ฐ์ดํธ๋ฅผ ํ ์ ์๋ค.
๋ํ Component(์ปดํฌ๋ํธ) ๊ธฐ๋ฐ์ ๊ฐ๋ฐ์ ํตํด ๋ณต์กํ UI๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์์ผ๋ฉฐ JSX๋ฌธ๋ฒ์ผ๋ก ์ปดํฌ๋ํธ๋ฅผ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๋ค.
๊ฐ๋ฐ๋ฐฉ์์๋ ์ ์ฐจ์ / ์ ์ต์ ๊ฐ๋ฐ์ด ์๋ค.
์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ๊ฒ์ธ๊ฐ ์ ์ค์ ์ ๋๋ ๋ฐฉ์์ด๊ณ , ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ์ ๋ฌด์์ ํด๊ฒฐํ ๊ฒ์ธ๊ฐ์ ์ค์ ์ ๋๋ ๋ฐฉ์์ด๋ค.
์ฝ๊ฒ ์ค๋ช ํ๋ฉด,
์ ์ฐจ์ : ์ด ๋ฐฉํฅ์ผ๋ก ์ง์งํด์ ๋ ๋ฒ์งธ ๋ธ๋ก์์ ์ฐํ์ ํด์ฃผ์๊ณ , ์ดํ ์ฒซ ๋ฒ์งธ ์ ํธ๋ฑ์์ ์ขํ์ ํด์ฃผ์ธ์. ์ ๋ฐฉ์ ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ๋๊น์ง ์ง์งํด์ฃผ์๊ณ , ์๋ฐฉ์๊ฐ ์๋ ๋ธ๋ก์์ ์ฐํ์ ํ 300m ์์์ ๋ด๋ ค์ฃผ์ธ์.
์ ์ธ์ : OOO์ผ๋ก ๊ฐ์ฃผ์ธ์.
์๋ฅผ ๋ณด๋ฉด ์ ์ฐจ์ ์ ๋ชฉ์ ์ง์ ์ด๋ป๊ฒ ๋๋ฌํ๋์ง์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๊ณ , ์ ์ธ์ ์ ๋ชฉ์ ์ง์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ์ฐจ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๊ณ , ๋ฆฌ์กํธ๊ฐ ์ ์ธ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ด๋ค.
์ ์ธ์ ์ธ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ฉด, ๊ฐ๋ฐ ๊ณผ์ ์์๋ ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ ๋ชจ์ต๋ง ๊ณ ๋ คํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ํจ์ฌ ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ผ๋ฉฐ, ์ด๋ ๊ธฐ์กด์ DOM์ ์ ์ฐจ์ ์ผ๋ก ์กฐ์ํ๋ ๊ฐ๋ฐ ๋ฐฉ์์ ํจ๋ฌ๋ค์์ ์์ ํ ๋ฐ๊พผ ์๋ก์ด ํจ๋ฌ๋ค์์ผ๋ก์ ์ ํ์ด๋ค.
Virtual DOM์ ๋ฆฌ์กํธ์ ๊ฐ์ฅ ํฐ ๊ธฐ๋ฅ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋ฆฌ์กํธ์์ UI๋ฅผ ์
๋ฐ์ดํธํ๊ณ ์ ํ ๋, ์ ์ธ์ ํน์ง์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์ค๊ฐ๊ณผ์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด DOM ์์์ ๋ณํ๋ฅผ ์ฃผ๊ธฐ ์ , ๋ด๋ถ์ ์ผ๋ก ๊ฐ์ DOM์ ์ด์ฉํด์ ์ค์ DOM์ ์ผ์ด๋์ผ ํ๋ ๋ณํ๋ฅผ ๊ณ์ฐํ๋ค.
๊ทธ๋ฐ๋ฐ ์ ์ค๊ฐ๊ณผ์ ์ด ๋ฒ๊ฑฐ๋กญ๊ฒ ์ถ๊ฐ๊ฐ ๋์์๊น ???
์ฐ์ ํ๋ฉด์ DOM ์์์ ๋ณํ๊ฐ ์๊ธฐ๋ฉด ์น ๋ธ๋ผ์ฐ์ ๋ ๋ค์ ๋ ๋ ํธ๋ฆฌ(DOMํธ๋ฆฌ + CSSOMํธ๋ฆฌ), ๋ ์ด์์ ์์น๋ฅผ ๊ณ์ฐํ๊ณ , ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์์
์ ์ํํ๋ค.
๊ทธ๋ฐ๋ฐ ์์ฆ์ ์น ํ์ด์ง๋ค์ ์ํธ์์ฉ์ด ๋ง์ ๋งํผ DOM ์กฐ์์ด ๋ง์ด ๋ฐ์ํ๊ฒ ๋๋ค.
์ด๋ DOM์ ์กฐ์ํ ๋๋ง๋ค ์์ ๊ฐ์ ์์
์ ๋ฐ๋ณต ์ํํ๋ฉด, ์ฑ๋ฅ์ด ์ ํ๋๊ณ , ์ ์ฒด์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๋นํจ์จ์ ์ผ๋ก ๋ง๋ ๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ์ด์ UI ์ํ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํ๋ ๊ฐ์ DOM์ ํตํด ๋ณ๊ฒฝ๋ UI์ ์ต์ ์งํฉ์ ๊ณ์ฐํ์ฌ DOM ์ฒ๋ฆฌ ํ์๋ฅผ ์ต์ํํ๊ณ ํจ์จ์ ์ผ๋ก ์งํํ๋ค.
view์ ๋ณํ๊ฐ ์๋ค๋ฉด ๊ทธ ๋ณํ๊ฐ ์ค์ DOM์ ์ ์ฉ๋๊ธฐ ์ ์ ๊ฐ์ DOM์ ๋จผ์ ์ ์ฉํด๋ณด๊ณ , ๊ทธ ์ต์ข
์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์ค์ DOM์ ์ ๋ฌํ๋ ๊ฒ์ด๋ค.
์ด๋ก์จ, ์น ๋ธ๋ผ์ฐ์ ๋ด์์ ๋ฐ์ํ๋ ์ฐ์ฐ์ ์์ ์ค์ด๋ฉด์ ์ฑ๋ฅ ์ ํ๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ ์ฌํ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ ๋จ์๋ฅผ ์๋ฏธํ๋ค.
์ฝ๊ฒ ๋งํด ๊ฐ ์ปดํฌ๋ํธ๋ ๋ ๊ณ ๋ธ๋ญ์ด๊ณ , ์ฌ๋ฌ ๋ ๊ณ ๋ธ๋ญ์ ์กฐ๋ฆฝํด ์๋ก์ด ๋ ๊ณ ๋ธ๋ญ์ ๋ง๋ค๊ฑฐ๋ ๋์ผํ ๋ ๊ณ ๋ธ๋ญ์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉํด ์กฐ๋ฆฝํ ์ ์๋ค.
ํ์ํ ๊ณณ์์ ์ฌ์ฌ์ฉํ ์ ์๋ค.
ํจ์๋ ๊ธฐ๋ฅ์ด ๋
์ง์ ์ด๊ณ ํ๋ฒ ์ ์ธํด๋๋ฉด ํ์ํ ๋๋ง๋ค ํธ์ถํ๋ฉด์ ์ฌ์ฌ์ฉํ ์ ์๋ฏ์ด, ์ปดํฌ๋ํธ๋ ํจ์์ฒ๋ผ ํ์ํ ๊ณณ์ ๊ฐ์ ธ์์ ์ฌ์ฉํ ์ ์๋ค.
๋
๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋ ์ ์ง๋ณด์์ ์ข๋ค.
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ง ์์์ ๊ฒฝ์ฐ, ๊ณตํต์ ์ธ ์คํ์ผ ๋ฑ์ ๋ฐ๊ฟ ๋ ์ผ์ผ์ด ๋ชจ๋ ํญ๋ชฉ์ ์ฐพ์์ ์์ ํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ง๋ง,
์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ์ปดํฌ๋ํธ๋ง ์์ ํ๋ฉด ๋๋ค.
๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ํฌํจํ ์ ์๋ค.
์ปดํฌ๋ํธ๋ <๋ถ๋ชจ ์ปดํฌ๋ํธ /> ์์ <์์ ์ปดํฌ๋ํธ />๋ค์ ์์ฑํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
ํด๋น ํ์ด์ง๊ฐ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ํ๋์ ํ์
ํ๊ธฐ ์ข๋ค.
ํ ํ์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์ ์ ํ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌํ์ฌ ๊ตฌ์ฑํ๋ค๋ฉด, ํด๋น ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ๋ฅผ ํ์
ํ๊ธฐ ์ฉ์ดํ๋ค.
import React from 'react';
class App extends React.Component {
render() {
return <h1>This is Class Component!</h1>;
}
}
export default App;
ํด๋์ค ์ปดํฌ๋ํธ์์๋ render() ๋ฉ์๋๊ฐ ์์ด์ผ ํ๊ณ , ๊ทธ ์์์ ํ๋ฉด์ ๋ณด์ฌ์ค JSX๋ฅผ ๋ฐํํ๋ค. state ๋ฐ lifecycle API๋ฅผ ํตํด ๊ด๋ จ ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
import React from 'react';
const App = () => {
return <h1>This is Function Component!</h1>;
};
export default App;
ํจ์ ์ปดํฌ๋ํธ๋ render() ๋ฉ์๋ ์์ด JSX๋ฅผ ๋ฐํํ๋ ๋ฐฉ์์ผ๋ก, ํด๋์ค ์ปดํฌ๋ํธ์ ๋นํด์ ๊ฐ๋จํ์ง๋ง state์ lifecycle์ ๊ด๋ฆฌํ์ง ๋ชปํ๋ค๋ ๋จ์ ์ด ์๋ค.
ํ์ง๋ง Hook ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋ฉด์ ํจ์ ์ปดํฌ๋ํธ์์๋ state๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์๊ณ , ๊ทธ ํ๋ก ํจ์ ์ปดํฌ๋ํธ๊ฐ ๋ ๋ง์ด ์ฐ์ด๊ณ ์๋ค.
๋ฆฌ์กํธ๋ ์๋ฌธ์๋ก ์์ํ๋ ์์๋ฅผ HTML ํ๊ทธ๋ก ์ธ์ํ๊ธฐ ๋๋ฌธ์ ์ปดํฌ๋ํธ ๋ช ์ ํญ์ ๋๋ฌธ์๋ก ์์ํด์ผํ๋ค.
JSX(JavaScript Syntax eXtension)๋ ๋ฆฌ์กํธ์์ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฅ ๋ฌธ๋ฒ์ด๋ค.
JSX๋ HTML๊ณผ JS ๋ก์ง์ ํ๋์ JSํ์ผ ์์์ ๋ชจ๋ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํ์ฅํ ๋ฌธ๋ฒ์ด๋ค.
JSX๋ก ์์ฑํ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๊ธฐ ์ ์ Babel์ด๋ผ๋ transcompiler๋ฅผ ํตํด ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ํํ๋ก ๋ณํ๋๋ค.
JSX๋ HTML ํ๊ทธ์ ์ ์ฌํ ํํ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์๋ณด๊ธฐ ์ฝ๊ณ ์ต์ํ๋ค. ๋ํ ํ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์์ HTML ๋งํฌ์ ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ก์ง์ ๋์์ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌํ๋ค.
const hi = <p>Hi</p>;
import React from 'react';
const Greetings = () => {
const name = '๋ฐ๋์ ';
return <h1>{name}๋, Welcome to Wecode!</h1>;
};
export default Greetings;
3.JSX attribute
ํ๊ทธ์ attribute name(์์ฑ๋ช
)์ camelCase๋ก ์์ฑํด์ผ ํ๊ณ , class๋ฅผ ์ฃผ๊ณ ์ถ์ ๋๋ className์ ์ฌ์ฉํด์ผ ํ๋ค.
/* HTML
<h1 class="greetings">Welcome to Wecode!</h1>
/* JSX
<h1 className="greetings">Welcome to Wecode!</h1>
// JS
const title = document.getElementsByClassName("title")[0];
title.addEventListener("click", handleClick);
// JSX
<h1 className="title" onClick={handleClick}>
Welcome to Wecode!
</h1>
// HTML
<h1 style="color:red;background-image:yellow">Welcome to Wecode!</h1>
// JSX
<h1 style={{ color: "red", backgroundImage: "yellow" }}>
Welcome to Wecode!
</h1>
inline ์คํ์ผ์ css๋ณด๋ค ์ฑ๋ฅ์ด ๋ฎ๊ณ ์ฐ์ ์์๊ฐ ๋ใน๊ธฐ ๋๋ฌธ์, ๋์ ์ผ๋ก ๊ณ์ฐํ์ฌ ์คํ์ผ๋ง์ ํ๋ ๊ฒฝ์ฐ ์ด์ธ์๋ ์ฌ์ฉ์ ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.
Self-Closing Tag
img ํ๊ทธ์ ๊ฐ์ด ํ๋์ ํ๊ทธ๊ฐ ์์์ธ ๊ฒฝ์ฐ, img /> ์ฒ๋ผ ํญ์ /๋ก ๋๋ด์ค์ผ ํ๋ค.
Nested JSX
๋ฐ๋์ ์ต์์๋ฅผ ๊ฐ์ธ๊ณ ์๋ ํ๊ทธ๊ฐ ์์ด์ผ ํ๋ค.
const Greetings = () => {
return (
<div>
<h1>๋์ ๋!</h1>
<h2>์์ฝ๋์ ์ค์ ๊ฑธ ํ์ํฉ๋๋ค!</h2>
</div>
);
}
JSX๋ฅผ ํ๋์ ํ๊ทธ๋ก ๊ฐ์ธ์ผ ํ๋ ์ด์ ๋, Virtual DOM์์ ์ปดํฌ๋ํธ ๋ณํ๋ฅผ ํจ์จ์ ์ผ๋ก ๋น๊ตํ ์ ์๋๋ก ํ ์ปดํฌ๋ํธ๋ ํ๋์ DOM ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค๋ ๊ท์น์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.