๐Ÿ™ƒ ์™œ ๋ฆฌ์•กํŠธ์—ฌ์•ผ ํ•˜๋‚˜์š”?

khj0426ยท2022๋…„ 11์›” 19์ผ
0

ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ณต๊ณ ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ์‚ฌ๋žŒ์„ ์ •๋ง ๋งŽ์ด ๋ฝ‘๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์™œ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ฆฌ์•กํŠธ๊ฐ€ ์ฃผ๋Š” ์ด์ ์„ ๊ณต๋ถ€ํ•ด ๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

๋ฆฌ์•กํŠธ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ๋ฐ, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•จ.

๊ฐ„๋‹จํžˆ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •๋ฆฌํ•˜์ž๋ฉด,
์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ/์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ๋ฉด ์ด๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ/์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ง„ ๋งค๊ฐœ์ฒด์ธ ์…ˆ์ด๋‹ค.

๋„ทํ”Œ๋ฆญ์Šค ์›น์‚ฌ์ดํŠธ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž.
์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ . ์ฒ˜์Œ ํ™”๋ฉด์„ ๋“ค์–ด๊ฐ€๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ์‚ฌ์šฉ์ž์™€ ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ๋‹ค.

๋„ทํ”Œ๋ฆญ์Šค ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ™”๋ฉด์ „ํ™˜์ด๋‚˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ต‰์žฅํžˆ ์›ํ• ํ•˜๋‹ค.
๊ธด ๋กœ๋”ฉ์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๋„ ์—†๊ณ ,
์›น ์‚ฌ์ดํŠธ์—์„œ๋„, ๋ชจ๋ฐ”์ผ ์•ฑ์„ ์ด์šฉํ•˜๋Š” ๊ฑฐ ๊ฐ™์ด ํŽธ--์•ˆ ํ•˜๋‹ค.

๊ธฐ์กด์˜ ์›น ์‚ฌ์ดํŠธ๋Š” ๋งํฌ๋‚˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, ์š”์ฒญ์ด ์„œ๋ฒ„์— ์ „์†ก๋˜๊ณ ,
์ƒˆ๋กœ์šด HTML ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ด์ ธ์„œ, ํ™”๋ฉด์— ๋ณด์—ฌ์กŒ๋‹ค.

๊ฒฐ๊ตญ, ์‚ฌ์šฉ์ž๋Š” ์ƒˆ HTMLํŽ˜์ด์ง€๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์งˆ๋–„๊นŒ์ง€, ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€, ์œ ์ €์˜ ํ–‰๋™๊ณผ ํ๋ฆ„์— ๋”ฐ๋ผ ์›นํŽ˜์ด์ง€๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”,
๋™์ ์ธ ์›นํŽ˜์ด์ง€์— ํšจ๊ณผ์ ์ด์ง€ ๋ชปํ•˜๋‹ค.

ํ•˜์ง€๋งŒ, ์ •์ ์ธ ํŽ˜์ด์ง€๋ณด๋‹ค, ๋™์ ์ธ ํŽ˜์ด์ง€๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ๊ณ , ์›น์€ ๋‹จ์ˆœํ•œ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ, ๋™์ ์ด๊ณ  ๋”์šฑ ๋ณต์žกํ•ด์กŒ๋‹ค

์œ ์ €๊ฐ€ ์–ด๋–ค ํ–‰๋™์„ ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ณ€ํ•ด์•ผ ํ•œ๋‹ค.

์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ UI๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ , ๋ณต์žกํ•œ,๋Œ€๊ทœ๋ชจ์˜ ์›น์„ ๊ด€๋ฆฌํ•˜๋ ค๊ณ !

์ด๋Ÿฐ ์ด์œ ๋กœ ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ‘€ ์•„๋‹ˆ, ๊ทธ๊ฑด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€์š”?

๋งž๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ DOM์„ ์ด์šฉํ•˜๋ฉด, ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ DOM์€ ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€”๋–„๋งˆ๋‹ค ์ƒˆ HTML์„ ๋กœ๋“œํ•œ๋‹ค.
๊ทธ๋ฆฌ๊ณ  DOM Tree์—์„œ ๋…ธ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์›น ํŽ˜์ด์ง€์— ๋ฐ˜์˜๋œ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ, ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด,
์ „์ฒด ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ฑด๋“œ๋ ค์•ผ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ƒ๊ธด๋‹ค.

DOM ์—˜๋ฆฌ๋จผํŠธ ์ถ”๊ฐ€, ์ œ๊ฑฐ ๋˜๋Š” ๋ณ€๊ฒฝ์‹œ, Reflow๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Reflow(Layout)

์–ด๋–ค ์•ก์…˜์ด๋‚˜ ์ด๋ฒคํŠธ๋กœ, HTML์š”์†Œ์˜ ์œ„์น˜๋‚˜, ํฌ๊ธฐ๊ฐ€ ์žฌ์กฐ์ •๋œ๋‹ค๋ฉด,
ํ•ด๋‹น ์š”์†Œ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ž์‹์š”์†Œ๋‚˜, ๋ถ€๋ชจ์š”์†Œ์˜ Layout์„ ๋‹ค์‹œ ๊ทธ๋ฆฐ๋‹ค.
์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ, ๊ฐ ์š”์†Œ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋œ๋‹ค.

๋ฐ‘์˜ ์ฝ”๋“œ๋Š” Reflow๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์‹œ์ฝ”๋“œ์ด๋‹ค.

// reflow ๋ฐœ์ƒ ์˜ˆ์ œ
function reflow() { 
	document.getElementById('content').style.width = '600px';
}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ ์‚ฌ์šฉํ•ด์„œ, Reflow๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์„ฑ๋Šฅ์ €ํ•˜๊ฐ€ ์‹ฌํ•ด์ง€๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.

Virtual DOM

Virtual DOM์€ ๊ธฐ์กด DOM ์กฐ์ž‘์ด ๋งŽ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ,
๋น„ํšจ์œจ์ ์ธ ๋žœ๋” ๊ณผ์ •์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•˜์˜€๋‹ค.!

โญ ๋ฆฌ์•กํŠธ๋Š” ์ปดํผ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด UI๋ฅผ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.

์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ์กฐ๊ฑด์€ ๋‹ค์–‘ํ•˜๋‹ค.
state,props,redux store ๋“ฑ์˜ ์ƒํƒœ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒฝ์šฐ..(๊ณต๋ถ€ํ•ด์•ผ ํ•  ๋ถ€๋ถ„)
๋ฆฌ์•กํŠธ๊ฐ€ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜๋ฅผ ์žฌํ˜ธ์ถœํ•ด์„œ ์žฌ๋žœ๋”๋งํ•ด์ค€๋‹ค.'

์ด๋•Œ, ๊ฐ€์ƒDOM์œผ๋กœ, ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„์˜ UI๋งŒ ํšจ๊ณผ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
๊ฐ€์ƒ DOM์€ DOM์„ ๋ถ„์„ํ•ด ๋งŒ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์ด๋‹ค.

์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด, ์ƒˆ ๊ฐ€์ƒ DOM๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ ,
์ด์ „์˜ ๊ฐ€์ƒ DOM๊ณผ ๋น„๊ต๋ฅผ ํ•œ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ ๋ฐ”๋€ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด,

ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ์‹ค์ œ DOM์— ๋ฐ˜์˜๋œ๋‹ค.

์œ„์˜ ๊ทธ๋ฆผ์€ ํฌ๊ฒŒ ๊ฐ€์ƒ DOM์˜ ์žฌ์กฐ์ • ๊ณผ์ •์„ ์„ค๋ช…ํ•œ ๊ทธ๋ฆผ์ด๋‹ค.

  1. UI๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด, ์ „์ฒด UI๋ฅผ ๊ฐ€์ƒ DOM์œผ๋กœ ๋žœ๋”๋งํ•œ๋‹ค.
  2. ๋ฐฉ๊ธˆ ๋žœ๋”๋ง ํ•œ ๊ฐ€์ƒ DOM๊ณผ ์ด์ „์˜ ๊ฐ€์ƒ DOM์„ ๋น„๊ตํ•ด, ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
  3. ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ๋ถ€๋ถ„๋งŒ DOM์— ์ ์šฉํ•œ๋‹ค

๊ทธ ์™ธ์—๋„ ์—ฌ๋Ÿฌ ์žฅ์ ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์ปดํฌ๋„ŒํŠธ๋‹จ์œ„ ์ž‘์„ฑ, React Native๋“ฑ๋“ฑ....ํ•˜๋‚˜์”ฉ ๊ณต๋ถ€ํ•  ์ƒ๊ฐ์ด๋‹ค!

profile
ํ™”์ดํŒ…ํ™”์ดํŒ…

0๊ฐœ์˜ ๋Œ“๊ธ€