๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’  ๋ฆฌ์•กํŠธ React

๋ฆฌ์•กํŠธ์˜ ํŠน์ง•

by Meteora_ 2021. 6. 27.
728x90

 

๋ฆฌ์•กํŠธ(React)
ใ„ดReact๋Š” ํŽ˜์ด์Šค๋ถ์—์„œ ๊ฐœ๋ฐœํ•œ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
ใ„ดReact๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ธด ํ•˜์ง€๋งŒ Redux, react-router์™€ ํ•จ๊ป˜ ํ”„๋ ˆ์ž„์›Œํฌ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋œ๋‹ค.
ใ„ดReact๋Š” Virtual DOM์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํƒœ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์„ ํƒ์ ์œผ๋กœ UI๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.

DOM (Document Object Model)
ใ„ด๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐํ™”๋œ ๋ฌธ์„œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•. (XML,HTML๋กœ ์ž‘์„ฑ)
ใ„ด์›น ๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)๋Š” DOM์„ ํ†ตํ•ด์„œ javascript, css๋ฅผ ์ ์šฉํ•œ๋‹ค.

DOM์˜ ๋ฌธ์ œ์ 
ใ„ดDOM API์˜ ์ตœ๋Œ€ ๋ฌธ์ œ์ ์€ ๋™์  UI์— ์ตœ์ ํ™”๋˜์ง€ ์•Š์Œ์ด๋‹ค.
ใ„ด๋Œ€๊ทœ๋ชจ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์ˆ˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋กœ๋”ฉ๋˜๊ณ  ํ‘œํ˜„ํ•ด์•ผํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ DOM์— ์ง์ ‘ ์ ‘๊ทผํ•˜์—ฌ ํ”„๋ก ํŠธ์—”๋“œ์— ๋ณ€ํ™”๋ฅผ ์ฃผ๋‹ค ๋ณด๋ฉด ์„ฑ๋Šฅ์ƒ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
ใ„ดDOM๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค css๋ฅผ ๋‹ค์‹œ ์—ฐ์‚ฐํ•˜๊ณ  ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•œ ๋’ค ํŽ˜์ด์ง€๋ฅผ ๊ทธ๋ฆฐ๋‹ค. (์ด๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆผ)
ใ„ด๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑ์„ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์ด reflow, ๋ ˆ์ด์•„์›ƒ์— ๊ด€๊ณ„์—†๋Š” ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด repaint๋ผ ํ•œ๋‹ค.
ใ„ด์‹œ๊ฐ„๋‚ด์— reflow๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐœ์ƒํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์ด ์ž‘์—…๋“ค์„ ๋ชจ์•„์„œ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•œ๋‹ค.
ใ„ด์ตœ์ ํ™”๋ฅผ ํ•˜์ง€ ๋ชปํ•  ๋•Œ๊ฐ€ ์žˆ์–ด์„œ reflow ํšŸ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
ใ„ด์ตœ์†Œํ•œ์˜ DOM์กฐ์ž‘์„ ํ•ด์•ผ ํ•œ๋‹ค.

Virtual DOM
ใ„ดVirtual DOM์„ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์ œ DOM์— ์ ‘๊ทผํ•ด์„œ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹ , ์ถ”์ƒํ™”์‹œํ‚จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. (DOM์‚ฌ๋ณธ)

React์—์„œ ์ฒ˜๋ฆฌ๊ณผ์ •
1) ๋ฐ์ดํ„ฐ๋กœ๋“œ
2) Virtual DOM์— ๋ Œ๋”๋ง
3) ์ด์ „ ๋ Œ๋”๋ง ๋‚ด์šฉ๊ณผ Virtual DOM์— ์žˆ๋Š” ๋‚ด์šฉ์„ ๋น„๊ต
4) ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ DOM์— ์ ์šฉ

๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 
ใ„ด Virtual DOM์„ ํ†ตํ•œ UI ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฐํ™” ๋ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์œ ์šฉ


๋ฆฌ์•กํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ create-react-app์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
ํ™˜๊ฒฝ์„ค์ •ํ•  ๋•Œ babel, webpack ๋“ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•˜์ง€๋งŒ create-react-app์œผ๋กœ ๋ฆฌ์•กํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ฉด
์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์„ create-react-app์ด ๋Œ€์‹  ์„ค์ •ํ•ด์ฃผ๊ณ  ์ˆจ๊ฒจ์ค€๋‹ค.

 

 

 

์ถœ์ฒ˜ ํ‘œ๊ธฐํ•ด ์ฃผ์„ธ์š” โ˜… 

๋Œ“๊ธ€