๋ฆฌ์กํธ(React.js)๋ ๋ญ๊น? ์ ๋ฆฌ์กํธ(React.js)๋ฅผ ์ฌ์ฉํ ๊น?
๐ ๋ค์ด๊ฐ๋ฉฐ
๋ฆฌ์กํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋๋ก ์น์ฌ์ดํธ ๊ฐ๋ฐ ์ ๋ง์ด ์ฌ์ฉ๋๋ ์ธ์ด์ ๋๋ค.
ํนํ ์ต๊ทผ๋ค์ด ๋ง์ ์ฌ๋๋ค์ด ๊ด์ฌ์ ๊ฐ์ง๊ณ ์๊ณ , ์ค์ ๋ก ํ์ฌ์์๋ ์ ๊ทน์ ์ผ๋ก ํ์ฉ๋๊ณ ์๋ ์ถ์ธ์ฃ .
์ด๋ฒ ํฌ์คํ ์์๋ ๋ฆฌ์กํธ๊ฐ ์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์๋์ง ์์๋ณด๊ณ ์ ํฉ๋๋ค.
๋ฆฌ์กํธ(React.js)๋ ๋ฌด์์ผ๊น โ
React.js๋ ํนํ SPA(Single Page Application)์ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์คํ ์์ค JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
React๋ Facebook์์ ์ผํ๋ ์ํํธ์จ์ด ์์ง๋์ด jordan walke๊ฐ ์ฒ์ ๋ง๋ค์์ต๋๋ค.
์น ๋ฐ ๋ชจ๋ฐ์ผ ์ฑ์ view layer๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฒ์ ํตํด์ ์ฌ๋ฌ๊ฐ์ง ์ ๋ณด๋ฅผ ํ ๊ณณ์ ๋ชจ์์ ๋ณด์ฌ์ค ์ ์๊ณ , ๋ทฐํฌํธ ๊ฐ๋ ์ ๋์ ํ๊ธฐ ๋๋ฌธ์ ์คํฌ๋กค๋ง ํจ๊ณผ ๋ฑ ์๊ฐ์ ์ธ ๋ถ๋ถ์์์ ํํ์ด ์์ ๋กญ์ต๋๋ค.
SPA (Single Page Application)๋ฐฉ์์ด๋ผ ํ์ด์ง ์ด๋์์ด ๋น ๋ฅด๊ฒ ์ฝํ ์ธ ๋ฅผ ์ ๊ณตํ ์ ์๋ค๋ ์ ๋ ๋งค๋ ฅ์ ์ด์ฃ .
๋ํ React๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
React๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฆฌ์กํธ(React.js)์ ๊ธฐ๋ฅ์ ๋ฌด์์ผ๊น โ
React์ ๋ช ๊ฐ์ง ์ค์ํ ๊ธฐ๋ฅ์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
React.js ์์ฑ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
- ์ ์ธ์ ์ ๋๋ค.
- ๊ฐ๋จํฉ๋๋ค.
- ๊ตฌ์ฑ์์ ๊ธฐ๋ฐ์ ๋๋ค.
- Server Side๋ฅผ ์ง์ํฉ๋๋ค.
- ๊ด๋ฒ์ํฉ๋๋ค.
- ๋น ๋ฆ ๋๋ค.
- ๋ฐฐ์ฐ๊ธฐ ์ฝ์ต๋๋ค.
JSX
React์์๋ ํ ํ๋ฆฟ์ ์ผ๋ฐ JavaScript๋ฅผ ์ฌ์ฉํ๋ ๋์ JSX๋ฅผ ์ฌ์ฉํฉ๋๋ค.
JSX๋ HTML ์ธ์ฉ์ ํ์ฉํ๊ณ ์ด๋ฌํ HTML ํ๊ทธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ ๊ตฌ์ฑ ์์๋ฅผ ๋ ๋๋งํ๋ ๊ฐ๋จํ JavaScript์ ๋๋ค.
HTML ๊ตฌ๋ฌธ์ React Framework์ JavaScript ํธ์ถ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ํ. ์์ํ ์ค๋๋ JavaScript๋ก ์์ฑํ ์๋ ์์ต๋๋ค.
React Native
- React์๋ 2015๋ Facebook์์ ๋ฐํํ ๋ค์ดํฐ๋ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
- IOS, Android ๋ฐ UPD์ ๊ฐ์ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์ํคํ ์ฒ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Javascript๋ง์ ์ฌ์ฉํ์ฌ ํ๋ ์์ํฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ชจ๋ฐ์ผ ์ฑ์ ๋๋ค.
- React์ ๋์ผํ ๋์์ธ์ ์ฌ์ฉํ๋ฏ๋ก ํ๋ถํ ๋ชจ๋ฐ์ผ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ/์ ์ธ์ ๊ตฌ์ฑ ์์๋ฅผ ํ์ฉ/ํฌํจํ ์ ์์ต๋๋ค.
- ์ผ๋ฐ iOS ๋ฐ Android ์ฑ๊ณผ ๋์ผํ ๊ธฐ๋ณธ UI ๋น๋ฉ ๋ธ๋ก์ ์ฌ์ฉํฉ๋๋ค. react-native๋ฅผ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ข์ ์ ์ Objective-C, Java ๋๋ Swift๋ก ์์ฑ๋ ๊ตฌ์ฑ ์์๋ฅผ ํ์ฉ/์ฑํํ๋ ๊ฒ์ ๋๋ค.
๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ
React์์๋ ๋ณ๊ฒฝํ ์ ์๋ ๊ฐ ์ธํธ๊ฐ HTML ํ๊ทธ์ ์์ฑ์ผ๋ก ๊ตฌ์ฑ ์์ ๋ ๋๋ฌ์ ์ ๋ฌ๋ฉ๋๋ค.
๊ตฌ์ฑ ์์๋ ์์ฑ์ ์ง์ ์์ ํ ์ ์์ง๋ง ์์ ํ ์ ์๋ ์ฝ๋ฐฑ ๊ธฐ๋ฅ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
์ด ์์ ํ ํ๋ก์ธ์ค๋ ์์ฑ์ด ์๋๋ก ํ๋ฆ ๋๋ค.
๊ฐ์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ
React๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ์ฐํ ๋ค์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ ์บ์๋ฅผ ๋ง๋ญ๋๋ค.
ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํด ์ ์ฒด ํ์ด์ง๊ฐ ๋ ๋๋ง๋๋ ๊ฒ์ฒ๋ผ ์ฝ๋ฉํ ์ ์๋๋ก ํ๋ ํน์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ฐ๋ฉด ๋ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์ ๋ก ๋ณ๊ฒฝ๋๋ ๊ตฌ์ฑ ์์๋ง ๋ ๋๋ง ํฉ๋๋ค.
Virtual DOM์ผ๋ก ์ธํด ์ฐ๋ฆฌ๊ฐ ์ค๋งํธํฐ ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ์น ํ์ด์ง์์๋ ์ฑ ๊ฐ์ ๋น ๋ฅธ ํ๋ฉด ์ ํ๊ณผ ๊ฐ์ ์ข์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ค ์ ์์ต๋๋ค.
์๋ ์์์ ์ด๋ป๊ฒ ์๋๋๋์ง, React Virtual DOM์ ๋ํด์ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด์ง ์์์ ๋๋ค.
์ด์ ์ฐ๋ฆฌ ์์ ๋์ธ ์ฃผ์ ์ง๋ฌธ์ React๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์ ๋๋ค.
Vue, Angular์ ๊ฐ์ด ํ๋ก ํธ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด์ฃผ๋ ์คํ ์์ค ํ๋ซํผ์ด ๋๋ฌด ๋ง์ต๋๋ค.
๋ค๋ฅธ ๊ฒฝ์ ๊ธฐ์ ์ด๋ ํ๋ ์์ํฌ์ ๋นํด React์ ์ด์ ์ ๋ํด ๊ฐ๋จํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋งค์ผ ๋ณํํ๋ ํ๋ก ํธ์๋ ํ๊ฒฝ์์ ์๋ก์ด ํ๋ ์์ํฌ๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
ํนํ ํด๋น ํ๋ ์์ํฌ๊ฐ ๊ถ๊ทน์ ์ผ๋ก ๋ง๋ค๋ฅธ ๊ณจ๋ชฉ์ด ๋ ์ ์๋ ๊ฒฝ์ฐ์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
์ ๋ฆฌ์กํธ(React.js)์ผ๊น โ
๋จ์์ฑ
ReactJS๋ ๋ฐ๋ก ์ดํดํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
์ผ๋ฐ JavaScript๋ง ์ฌ์ฉํ๋ฉด React๋ฅผ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๋ฐฐ์ฐ๊ณ ์ ๋ฌธ ์น๋ฐ ๋ชจ๋ฐ์ผ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
React๋ HTML๊ณผ JavaScript๋ฅผ ํผํฉํ ์ ์๋ JSX๋ผ๋ ํน์ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์๊ตฌ ์ฌํญ์ด ์๋๋๋ค.
๊ฐ๋ฐ์๋ ์ฌ์ ํ ์ผ๋ฐ JavaScript๋ก ์์ฑํ ์ ์์ง๋ง JSX๋ ์ฌ์ฉํ๊ธฐ๊ฐ ํจ์ฌ ์ฝ์ต๋๋ค.
๋ฐฐ์ฐ๊ธฐ ์ฌ์
JavaScript ๋ํ ๊ธฐ๋ณธ ์ง์์ด ์๋ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ React๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์์ง๋ง Angular์ Ember๋ 'Domain-specific Language'๋ผ๊ณ ํ์ฌ ๋ฐฐ์ฐ๊ธฐ ์ด๋ ต๋ค๋ ์๋ฏธ์ ๋๋ค.
๋์ํ๋ ค๋ฉด CSS์ HTML์ ๋ํ ๊ธฐ๋ณธ ์ง์๋ง ์์ผ๋ฉด ๋ฉ๋๋ค.
๋ค์ดํฐ๋ธ ์ ๊ทผ
React๋ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค(React Native). ๊ทธ๋ฆฌ๊ณ React๋ ์ฌ์ฌ์ฉ์ฑ์ ๋ํ ๋งค์ฐ ์ข์ต๋๋ค.
์ฆ, ๊ด๋ฒ์ํ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ์ง์๋ฉ๋๋ค. ๋ฐ๋ผ์ ๋์์ IOS, Android ๋ฐ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
React๋ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํ๊ณ Flux๋ผ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ๋ ๋์คํจ์ฒ๋ผ๋ ํ๋์ ์ ์ด ์ง์ ์ ํตํด ๊ตฌ์ฑ ์์๋ก์ ๋ฐ์ดํฐ ํ๋ฆ์ ์ ์ดํฉ๋๋ค.
๋ํ ReactJS ์ฑ์ ์์ฒด ํฌํจ ๊ตฌ์ฑ ์์๋ฅผ ๋๋ฒ๊ทธ ํ๋ ๊ฒ์ด ๋ ์ฝ์ต๋๋ค.
์ฑ๋ฅ
React๋ ์ข ์์ฑ์ ์ํ ๋ด์ฅ ์ปจํ ์ด๋ ๊ฐ๋ ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
Browserify, Require JS, Babel, ReactJS-di๋ฅผ ํตํด ์ฌ์ฉํ ์ ์๋ EcmaScript 6 ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ์๋์ผ๋ก ์ฃผ์ ํ ์ ์์ต๋๋ค.
ํ ์คํธ ๊ฐ๋ฅ์ฑ
ReactJS ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ์ต๋๋ค.
React ๋ณด๊ธฐ๋ ์ํ์ ํจ์๋ก ์ฒ๋ฆฌ๋ ์ ์์ผ๋ฏ๋ก ReactJS ๋ณด๊ธฐ์ ์ ๋ฌํ ์ํ๋ก ์กฐ์ํ๊ณ ์ถ๋ ฅ ๋ฐ ํธ๋ฆฌ๊ฑฐ ๋ ์์ , ์ด๋ฒคํธ, ํจ์ ๋ฑ์ ์ดํด๋ณผ ์ ์์ต๋๋ค.
์ฐธ๊ณ :