์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค
1. createElement() - ์๋ก์ด ๋ ธ๋๋ฅผ ๋ง๋ ๋ค
2. createTextNode() - ์๋ก์ด ํ ์คํธ ๋ ธ๋๋ฅผ ๋ง๋ ๋ค
3. appendChild() - ๋ ธ๋1์ ๋ ธ๋2๋ฅผ appendํ๋ค
์ ๊น ์๋ฌธ์ ) ์ด๋ ๊ฒ ํ ์คํธ ๋ ธ๋๋ฅผ appendํ๋ ๊ฒ๊ณผ innerHTML์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฐจ์ด๊ฐ ๋ญ์ง?
์ด์จ๋ ,
์ 1~3์ ํตํด์ ์ฝ์ ํ ์ ๋ ธ๋๋ฅผ ๋ง๋ค์๊ณ , ์ด์ ๋ฌธ์์์ ์ํ๋ ์์น๋ฅผ ์ฐพ์์ ๋ค์ appendํด์ฃผ๋ฉด ๋๋ค.
ํ๋์ ๋ ธ๋๋ฅผ ๋ฆฌํดํ๋ ๋ฉ์๋์๋ getElementId('id')์ querySelector('css selector')๊ฐ ์๋๋ฐ ํ์๋ฅผ ์ฌ์ฉํด์ ๋ฆฌ์คํธ ๋ ธ๋์ ์ ๊ทผํ๋ค.
์์ ) ๋์ ๋ฆฌ์คํธ์ ๋ค์ฏ๋ฒ์งธ ์์์ธ NewYork์ JS๋ก ์ถ๊ฐํจ
1. createElement๊ฐ ๋ ํจ์จ์ ์ด๋ค
let div = document.querySelector('.container');
div.innerHTML += '<p>JS DOM</p>';
์ฝ๋๋ ๊น๋ํ๊ฒ ๋ณด์ด์ง๋ง...innerHTML์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ชจ๋ DOM node๋ค์ reparseํ๊ณ recreateํ๊ฒ ๋ง๋ค๊ธฐ ๋๋ฌธ์ ์๋ก์ด ์์๋ฅผ ๋ง๋ค๊ณ appendํ๋ ๊ฒ๋ณด๋ค ๋นํจ์จ์ ์.
2. createElement๊ฐ ๋ ์์ ํ๋ค
innerHTML์ ๋ด๊ฐ ํต์ ๊ถ์ ์ฅ๊ณ ์์ง ์์ ๋ ์ ์ฑ ์ฝ๋๊ฐ ์์ผ ์ํ์ด ์์
3. DocumentFragment๋ฅผ ์ฌ์ฉํด์ DOM์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋ ํจ์จ์ ์ด๋ค
let div = document.querySelector('.container');
for (let i = 0; i < 1000; i++) {
let p = document.createElement('p');
p.textContent = `Paragraph ${i}`;
div.appendChild(p);
}
์ด๊ฑด ๊ทธ๋ฅ creatElement/appendChild๋ฅผ ์ฌ์ฉํด์ ์์๋ฅผ ์ถ๊ฐํ ๊ฒ.
๋ง์ง๋ง์ค์ ๋ณด๋ฉด ๋งค๋ฒ div์ appendํ๊ณ ์๋๋ฐ ์ด๊ฒ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ผ๊ณ ํจ.
let div = document.querySelector('.container');
// compose DOM nodes
let fragment = document.createDocumentFragment();
for (let i = 0; i < 1000; i++) {
let p = document.createElement('p');
p.textContent = `Paragraph ${i}`;
fragment.appendChild(p);
}
// append the fragment to the DOM tree
div.appendChild(fragment);
fragment์ ์๋ก ๋ง๋ ์์๋ค์ ๋ถ์ฌ๋ฃ๊ณ ๋ง์ง๋ง์ ํ๋ฒ์ div์ appendํ๋ ๋ฐฉ์
document fragment๋ active DOM tree์ ๋งํฌํ๋ ๊ฒ ์๋๋ผ ํผํฌ๋จผ์ค์ ์ํฅ์ ์ ์ค๋ค๊ณ ํจ.
์ถ์ฒ )
fragment๊ฐ ๋ญ์ง๋ ๋๋ ์ ๋ชจ๋ฅด๊ฒ ์. ์์ง DOM์ ๋ํ ๊ณต๋ถ๊ฐ ๋ถ์กฑํด์ ์ค๋์ ์ฌ๊ธฐ๊น์ง๋ง ์์๋ณด๋ ค๊ณ ํจ. ํน์ ์ ์์๋ ๋ถ๋ค์ ๋ง๊ธ๋ก ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ ๊ฒ ๊ฐ๋ค.
๐ Reference
- Javascript and JQuery : Interactive Front-End Web Development by Jon Duckett
์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ... ์ ์ด์ฉํ ์ ๊ฐ ๊ตฌ๋ฌธ(spread syntax) (0) | 2021.01.28 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ classList ๋ก DOM์์์ ํด๋์ค ์ด๋ฆ ๊ฐ์ ธ์ค๊ธฐ (0) | 2021.01.28 |
์๋ฐ์คํฌ๋ฆฝํธ ๋๋ฑ ์ฐ์ฐ์ == ์ ์ผ์น ์ฐ์ฐ์ === (0) | 2021.01.18 |
์๋ฐ์คํฌ๋ฆฝํธ Async VS Defer ์ฐจ์ด์ (0) | 2021.01.18 |
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ & ์ด๋ฒคํธ ๋ฃจํ (MDN) (0) | 2020.10.19 |
๋๊ธ ์์ญ