๋ฆฌ์กํธ(React)์ ๋ทฐ(Vue.js)๋ ๋ชจ๋ ํ๋์ ์ธ ํ๋ก ํธ์๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ์ด ๋ ๊ธฐ์ ์ ๊ฐ๊ฐ ๊ณ ์ ํ ํน์ง๊ณผ ์ฅ๋จ์ ์ ๋ํด ์ด์ผ๊ธฐ ํด๋ณด๊ณ ์ ํ๋ค.
react๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ JSX(JavaScript XML)ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ฌ UI๋ก์ง๊ณผ DOM์ ๊ตฌํํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ฅ์ํด์ผ ํ๋ฉฐ ์ปค์คํฐ๋ง์ด์ง ๋ฐ ์์ ๋๊ฐ ๋์ํธ์ด๋ค. ๋ํ ์ปค๋ฎค๋ํฐ ํ์ฑ์ด ์ ๋์ด์๊ณ ํฐ ํ๋ก์ ํธ์ ์ฉ์ดํ๋ค.
Vue๋ ์ ๊ณต๋๋ html ๊ธฐ๋ฐ์ ํ ํ๋ฆฟ์ด ์์ด ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ ์์ด ๊ฐ๋ฅํ์ฌ ์ง์ ์ฅ๋ฒฝ์ด ๋ฎ๊ณ ๊ฐ๋ฐ ์๊ฐ ์ฝ๋ ํต์ผ์ฑ์ด ์์ผ๋ฉฐ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ฉ์ดํ๋ค.
react๋ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ JSX(JavaScript XML)ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ฌ UI๋ก์ง๊ณผ DOM์ ๊ตฌํํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋ฅ์ํด์ผ ํ๋ฉฐ ์ปค์คํฐ๋ง์ด์ง ๋ฐ ์์ ๋๊ฐ ๋์ํธ์ด๋ค. ๋ํ ์ปค๋ฎค๋ํฐ ํ์ฑ์ด ์ ๋์ด์๊ณ ํฐ ํ๋ก์ ํธ์ ์ฉ์ดํ๋ค.
Vue๋ ์ ๊ณต๋๋ html ๊ธฐ๋ฐ์ ํ ํ๋ฆฟ์ด ์์ด ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ ์์ด ๊ฐ๋ฅํ์ฌ ์ง์ ์ฅ๋ฒฝ์ด ๋ฎ๊ณ ๊ฐ๋ฐ ์๊ฐ ์ฝ๋ ํต์ผ์ฑ์ด ์์ผ๋ฉฐ ์๊ท๋ชจ ํ๋ก์ ํธ์ ์ฉ์ดํ๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(React)
๋ฆฌ์กํธ๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๋ค. ๋ฆฌ์กํธ๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ์์ ์ปดํฌ๋ํธ์์ ํ์ ์ปดํฌ๋ํธ๋ก ํ ๋ฐฉํฅ์ผ๋ก๋ง ํ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ์ถ์ ํ๊ธฐ๊ฐ ์ฝ๊ณ , ๋๋ฒ๊น
์ด ์ฉ์ดํ๋ค. ๋ํ, ๋ฆฌ์กํธ๋ Virtual DOM์ ํ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง์ ์
๋ฐ์ดํธํ์ฌ ์ฑ๋ฅ ์ ํ๋ฅผ ์ต์ํํ๋ค. ํ์ง๋ง ํ๋ฉด์ ์
๋ฐ์ดํธํ๊ธฐ ์ํด ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ ํ๋ฉด์ ์
๋ฐ์ดํธํ๋ ๊ด๋ จ ์ฝ๋๋ฅผ ๋งค๋ฒ ์์ฑํด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
๋ฆฌ์กํธ์์ ์ํ(State)์ ์๋ช ์ฃผ๊ธฐ(Lifecycle) ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ด ํธ์ถ๋์ด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค setState ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๊ฑฐ๋, ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ์ค์์ ๋ณํ๊ฐ ๊ฐ์ง๋๋ ๊ฒฝ์ฐ์ ๊ด๋ จ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ฌํ ์์ ์ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ง๋ง, ๋ฆฌ์กํธ์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด์๋ ํ์์ ์ด๋ค.
๋ฆฌ์กํธ์์ ์ํ(State)์ ์๋ช ์ฃผ๊ธฐ(Lifecycle) ๊ด๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ด ํธ์ถ๋์ด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์๋ฅผ ๋ค์ด, ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค setState ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ปดํฌ๋ํธ๋ฅผ ๋ค์ ๋ ๋๋งํ๊ฑฐ๋, ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ์ค์์ ๋ณํ๊ฐ ๊ฐ์ง๋๋ ๊ฒฝ์ฐ์ ๊ด๋ จ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ด๋ฌํ ์์ ์ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ง๋ง, ๋ฆฌ์กํธ์ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํด์๋ ํ์์ ์ด๋ค.
์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ(Vue)
๋ทฐ๋ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ง์ํ๋ค. ์ด๋ ํ๋ ์์ํฌ๊ฐ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๊ณ ์๋์ผ๋ก DOM ๊ฐ์ฒด์ ๋ ๋๋งํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์
๋ฐ์ดํธ ํ๋ค. ์ด๋ฌํ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๊ฐ์ด๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ํ๋ฉด์ด ์ฆ์ ๋ฐ์๋๋ฏ๋ก ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ์ฒดํฌํ๊ฑฐ๋ ์
๋ฐ์ดํธ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์์ด ํธ๋ฆฌํ๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ง๊ฑฐ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฒฝ์ฐ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์๋ค.
๊ฐ์๋(Virtual DOM)
์ค์ ๋์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ๋ค์ด ์์ด ์ค์ ๋์ ์กฐ์ํ๋ ์์
์ ๋ฌด๊ฒ๊ธฐ ๋๋ฌธ์ ๊ฐ์๋์ ๋ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ์ด์ ๊ฐ์๋์ ์๋ ๋ด์ฉ๊ณผ ํ์ฌ ๊ฐ์ ๋์ ๋น๊ตํ์ฌ ๋ฐ๋ ๋ถ๋ถ๋ง ์ค์ ๋์ ์ ์ฉํ๋ค.