๐ข ํ์ฌ ์ถ๊ตฌํ๋ ๋ชฉํ
ํ ๋ชฉํํ๋ ํ๋ก์ ํธ๋ ๊ธฐ๋์ ๋ชฉ ์ ๋ก๋ SNS์ด๋ค.
๊ธฐ๋์ ๋ชฉ์ ์ ๋ก๋ํ๊ณ ์ธ์คํ๊ทธ๋จ๊ณผ ๊ฐ์ด ์ข์์ ๊ธฐ๋ฅ, ์ ๋ก๋ ๊ธฐ๋ฅ, ํ๋กํ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ๊ณต๋ถ๋ฅผ ์์ํ๊ณ ,
๋ด๊ฐ ๋ง๋ค๊ณ ์ถ์ ํ๋ก์ ํธ๊ฐ ์๊ณ , ์ด๋ฅผ ์น ์ฑ์ผ๋ก ๋ง๋ค๊ณ ์ถ์๋ ๊ฒ์ด๋ค.
์ ํ๋ธ์์ ์ฐพ์๋ณด๋ ์ ๋ง ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๊ฐ ์์์ ธ ๋์๋ค.
๊ทธ์ค ๋ด๊ฐ ์ ํํด์ผ ํ ๊ฐ๋ฐ ์ธ์ด๋ JS(javascript)๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๊ณ , react.js๋ vue. js ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด
๋ณด๋ค ํฌ๋ฆฌ์์ดํฐ๋ธํ๊ณ ์ข์ ์น์ ๋ง๋ค ์ ์๋ค ํ๊ธฐ์ ๋ฐ๋ก ๊ณต๋ถ์ ๋ค์ด๊ฐ๋ค.
๊ทธ์ ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ react,vue,angular์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฟ๋ฆฌ์ธ ๋ฐ๋๋ผ JS๋ฅผ ์๊ณ ๊ฐ์ด์ผ ํ๋ค.
๊ฐ์๋ฅผ ์ ํํ๋๋ฐ ์ฒ์์ ๋๋ฌด ๋ง๋งํ๊ธฐ๋งํ๋ค. (๋น์ ๊ณต์์ ์ปค๋ฎค๋ํฐ๋ ์ ํ์ฉ ๋ชปํ๋ ์ฑ๊ฒฉ์ด๊ธฐ ๋๋ฌธ์ด๋ค.)
๊ทธ๋์ ๊ทธ๋ฅ ์ฃฝ์ด๋ผ ๊ตฌ๊ธ๋ง์ ์์ํ๋ค. ์ด๋ ๋ง๋๊ฒ๋ ๋๋ฌด ๊ฐ์ฌํ ์ ํ๋ฒ ๋ถ๋ค์ด ์๋ค.
๋๋ฆผ ์ฝ๋ฉ, ๋ ธ๋งค๋ ์ฝ๋, ์ํ์ฝ๋ฉ, ์ฝ๋ฉ ์ ํ ๋ฑ์ ์์์ ๋ฌด์์ ๋ณด๋ฉด์ ๊ธฐ๋ณธ์ ์ธ ์ง์์ ํก์ํ๊ธฐ ์์ํ๋ค.
๊ทธ์ค ๊ฐ์ฅ ์ธ๊ธฐ๊ฐ ์๊ณ ์์ ์ ์ด๋ผ ํ๋จ๋ ๊ฐ๊ณ ์(์ํ์ฝ๋ฉ)๋์ ๊ฐ์๋ฅผ ์์์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ ์ ๋ฌธํ๊ฒ ๋์๋ค.
์ธํ๋ฐ์์ ๊ฐ ๊ณ ์๋์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ณธ๊ฐ์๋ฅผ
๋ ธ๋งค๋ ์ฝ๋๋์ ๋ฐ๋๋ผ JS๋ฅผ ์ด์ฉํ To Do List, Paintbrush ์น์ ๋ง๋ค๊ฒ ๋์๋ค.
JS๋ ์ ๋ง ๋๋ฌด ๋ฐฉ๋ํ ์์ ๋ด์ฉ์ด ์๊ธฐ ๋๋ฌธ์ ๋ค ๊ณต๋ถํ๋ ๊ฒ์ ์ด๋ ต๋ค. ๋๋ฌธ์ ๋์ ์๋ฆฌ์ ์ต์ํด์ง๋ ์ด ํ์ด๋ฐ์
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋์ด๊ฐ ๋ณด๋ ค ํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ฌ ํ์ด์ค๋ถ(ํ:๋ฉํ)์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React๊ณต๋ถ๋ฅผ ์์ํ๋ค.
์ฌ๊ธฐ์ ์ ๊น! ๋ด๊ฐ Vue.js๊ฐ ์๋ React๋ฅผ ์ ํํ ์ด์ .
Q. Vue.js๋ฅผ ์ ํํ์ง ์๊ณ React๋ฅผ ์ ํํ ์ด์ ๋ ์ค๊น?
A. ์๋ง์ ๊ตฌ๊ธ๋ง์ ํตํด vue์ react ์ค ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ํํด์ผ ํ๋ ๊ณ ๋ฏผ์ ํ๋ค. (angular์ ๊ณ ๋ฏผ๋ ๋ชปํ๋ค...)
vue๋ ๋ฌ๋ ์ปค๋ธ๊ฐ ๋ฎ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ์ ์ฝ์์(์ฝ๋ฉ ์ ์์)์๊ฒ ์๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ผ ์ ์์๋ค.
+) ๋ด๊ฐ ๊ณํํ ์น ํ๋ก์ ํธ์ ์ฌ์ด์ฆ๊ฐ ์ปค์ง์ง ์๋๋ค๋ฉด vue๊ฐ ์ด์ธ๋ฆฌ์ง ์์๊น?๋ผ๋ ์๊ฐ์ ํ์๋ค.
๊ทธ๋ผ์๋ react๋ฅผ ์ ํํ ์ด์ ๋ react๋ ํ์ฌ ํ๊ตญ์์(2021๊ธฐ์ค) ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ,
vue๋ฅผ ๊ณต๋ถํ๊ณ react๋ก ๋์ด๊ฐ๋ ๊ฒ๋ณด๋ค react๋ฅผ ๊ณต๋ถํ๊ณ vue๋ ๋์ด๊ฐ๋ ๊ฒ์ด ํจ์ฌ ์ฝ๋ค๋ ์๊ฒฌ์ด ์ ๋ง ๋ง์๋ค.
( "react, vue ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณต๋ถํด์ผํด?"๋ณด๋ค ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋๋ฅผ ๊ณต๋ถํ๊ณ ๊ตฌํํ๋ ๊ฒ์ ์ค์ํ๋ค. IT๋ ๋น ๋ฅด๊ฒ ๋ณํํ๊ธฐ ๋๋ฌธ์ react๋ ์์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.)
๊ทธ๋ ๊ธฐ์ ๋ react๋ฅผ ์ ํํ๊ฒ ๋์๋ค.
๐ข ๋ฆฌ์กํธ ๊ณต๋ถ ๊ณํ
react๊ณต๋ถ๋ ๊น๋ฏผ์ค ๋์ ํจ์คํธ ์บ ํผ์ค์ ZeroCho๋์ ์น ๊ฒ์์ ๋ง๋ค๋ฉฐ ๋ฐฐ์ฐ๋ react๋ก ๊ณต๋ถํ ์์ ์ด๋ค.
+) ๊ฐ๊ณ ์ ๋์ redux์ react-redux๋ ๋ฐ๋์ ๋ด๋ณด๋๋ก ํ์.
React ๊ณต์ ๋ฌธ์๋ฅผ ๋ฐ๋ผ์ ์์ํ๋ ๊ฒ์ด ์ ๋ง Best์ผ ์ ์์ง๋ง,,,, ๋ ์ด๋ ต๋๋ผ,,,
TMI๋ฅผ ๋ฉ์ถ๊ณ ์ด์ ๋ถํฐ react๋ ๋ญ๊น์ ๋ํ ๊ธ์ ์์ฑํ๋๋ก ํ๊ฒ ๋ค.
โจReact๋ ๋ฌด์์ธ๊ฐ?
๋ฆฌ์กํธ๋ ํ์ด์ค๋ถ์ด ๋ง๋ ์ฌ์ฉ์ UI ๊ตฌ์ถ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
ํ๋์ ๋จ์ผ url์ ๊ฐ์ง๊ณ SPA(Single Page Application)์ผ๋ก ์ฌ์ดํธ๋ฅผ ํํํ๋ ๊ฒ์ ๊ฐ๋ฅ์ผํ๋ ํ๋ ์์ํฌ๋ค.
ํ๋ฐํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ
๋ฆฌ์กํธ๋ ์ ๋ง ์ธ๊ธฐ ์๋ ํ๋ฐํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
๋ฆฌ์กํธ์ ๋ํด์ ์์๋ณด๊ธฐ ์ ์, ์ด ํ๋ฐํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋๊ฒ ์ ํํ ๋ญ์ง, ๊ทธ๋ฆฌ๊ณ ์ ํ์ํ๊ฑด์ง์ ๋ํด์ ์์๋ณด์
์น์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ , ์ฌ์ค ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ์์ด๋ ๋ง๋ค์ด๋ผ ์ ์๋ค.
(๋จ์ํ ์ ์ ํ์ด์ง๋ฅผ ๋ง๋๋ ๊ฑฐ๋ผ๋ฉด ๊ทธ๋ฅ HTML๊ณผ CSS๋ง์ ์ด์ฉํด ๋ง๋ค๋ฉด ๋๋ค. (NO ์๋ฐ์คํฌ๋ฆฝํธ) ์ฌ๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ํด์ฃผ๋ฉด, ์ ์ ์ ํ๋ ํ๋ฆ์ ๋ฐ๋ผ์ ๋์ ์ผ๋ก ํ๋ฉด์ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋ค.)
์์ฆ์ ์น์์, ๋จ์ํ ์น ํ์ด์ง ๊ฐ ์๋๋ค. ์์ฆ ์น์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค.
๋ธ๋ผ์ฐ์ ์์ผ๋ก๋ ์ ๋ง ์์ฐ์ค๋ฌ์ด ํ๋ฆ์ผ๋ก ๋งค์ฐ ๋ง์ ๊ฒ๋ค์ ํ ์๊ฐ ์๋ค.
๊ฐ๋ น ์ฌ์ด ์์๋ก ํ๋จ์ ์๋ react ๊ณต์ ๋ฌธ์ ํ์ด์ง์์ side bar์ ์๋ ๋ชฉ์ฐจ๋ค์ ๋๋ฌ๋ณด๋ฉด
์์ํ๊ธฐ – React
A JavaScript library for building user interfaces
ko.reactjs.org
ํ์ด์ง๋ฅผ ์๋ก ๋ก๋ฉํ๋ฉฐ ํ๋ฉด ๊น๋นก์์ด ์๋ ๊ฒ์ด ์๋ ํ ํ์ด์ง ๋ด์์ ๋ถ๋๋ฝ๊ฒ ๋์ํ๋ฉฐ, ๋ชจ๋ฐ์ผ ํ๋ฉด์์๋ ์ฑ๊ณผ ๋น์ทํ ๋๋์ผ๋ก ๋์์ ํ๋ค.
์ด ๋ฆฌ์กํธ๋ 3๊ฐ์ง์ ๋ํ์ ์ธ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
1. JSX ๋ฌธ๋ฒ
2. Component ๊ธฐ๋ฐ
3. Virtual DOM
react๋ 3๊ฐ์ง ๋ถ๋ถ์์ ์ข์ ๋ฉด๋ชจ๋ฅผ ๋ณด์ฌ์ฃผ๋๋ฐ ์๊ฒฌ์ ๋จ๋ค.
1. ์ฌ์ฉ์ ์ธํฐํ์ด์ค, ์ฌ์ฉ์ ๊ฒฝํ๋ฉด์์ ์ฐ์ํ ๋ฉด๋ชจ๋ฅผ ๋ณด์ฌ์ค๋ค.
2. ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๋ฐ์ํ ๋ ์ฑํฌ๋ก๋์ด์ฆ๊ฐ ์ฐ์ํ๋ค.
3. ์ฌ์ฌ์ฉ ์ปดํฌ๋ํธ๊ฐ ์ข์ ์ ์ง๋ณด์ ๋ฉด์์ ์ข์ ๋ชจ์ต์ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
ํ์ด์ค๋ถ์ ์ ๋ฆฌ์กํธ๋ฅผ ๋ง๋ค๊ฒ ๋์๊น?
ํ์ด์ค๋ถ์ด ๋ฆฌ์กํธ๋ฅผ ๋ง๋ค๊ธฐ ์ ์๋, ์ด๋ฏธ Angular, Backbone, Knockout.js, Ember ๋ฑ์ ์๋ง์ ํ๋ ์์ํฌ๋ค์ด ์กด์ฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ํ๋ ์์ํฌ๋ค์ ๋ฐ์ดํฐ๋จ์ ๋ด๋นํ๋ ๋ชจ๋ธ(Model), ์ฌ์ฉ์์ ํ๋ฉด์์ ๋ณด์ด๊ฒ ๋๋ ๋ทฐ(View), ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์๊ฐ ๋ฐ์์ํค๋ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ ์ปจํธ๋กค๋ฌ (Controller)๋ก ์ด๋ค์ง MVC ํจํด, ๊ทธ๋ฆฌ๊ณ MVC ์์๋ถํฐ ํ์๋ MVVM(View Model), MVW(Whatever) ๋ฑ์ ํจํด๋ค๋ก ์ด๋ค์ ธ ์์ฃ .
์ฌ๊ธฐ์ ๊ณตํต์ ์ ๋ฐ๋ก ๋ชจ๋ธ์ ๋๋ค. ๋ฐฉ๊ธ ์ธ๊ธํ๋ ํ๋ ์์ํฌ๋ค์ ๋ชจ๋ธ์, ๋๋ถ๋ถ ์ด๋ป๊ฒ ์๋ํ๋๋ฉด, ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ ํตํ์ฌ ๋ชจ๋ธ์ ์๋ ๊ฐ์ด ๋ณํ๋ฉด, ๋ทฐ์์๋ ์ด๋ฅผ ๋ณํ์์ผ์ค๋๋ค. ์ฌ๊ธฐ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ ๋ณํ์์ผ์ค๋ค๋ ๋ถ๋ถ์ ๋๋ค. ์ผ๋จ ์ฒซ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ณ , ๋ณํ์ ๋ฐ๋ผ ํ์ํ ๊ณณ์ ๋ฐ๊ฟ์ฃผ๋ ๊ฑฐ์ฃ .
**”๋ณํ(Mutation)”**๋ผ๋ ๊ฒ์ ์๋นํ ๋ณต์กํ ์์ ์ ๋๋ค. ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋, ๋ชจ๋ธ์ ๋ณํ๋ฅผ ์ผ์ผํค๊ณ , ๋ณํ๋ฅผ ์ผ์ผํด์ ๋ฐ๋ผ ์ด๋ค DOM์ ๊ฐ์ ธ์์ ์ด๋ ํ ๋ฐฉ์์ผ๋ก ๋ทฐ๋ฅผ ์ ๋ฐ์ดํธํด์ค์ง ๋ก์ง์ ์ ํด์ค์ผ ํ๋๋ฐ์, ํ์ด์ค๋ถ์์๋ ๋ฆฌ์กํธ๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ด๋ฌํ ๋ฐ์์ ํ์ต๋๋ค:
๊ทธ๋ ๊ฒ ํ๋ฉด ์ง์ง ๊ฐ๋จํ๊ฒ ์ฃ ? ๊ทธ๋ฐ๋ฐ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฌด์จ ๊ฒ์ ์์ง๋ ์๋๊ณ , DOM ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ์ด ํ์ด์ง๋ ๊ทธ๋๊ทธ๋ ์๋ก ๋ทฐ๋ฅผ ๋ง๋ค์ด๋ฒ๋ฆฌ๋ผ๊ณ ํ๋ฉด ์ฑ๋ฅ์ ์ผ๋ก ์์ฒญ๋ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ์ฌ์ฉํ๋ ๊ฒ ๋ฐ๋ก, Virtual DOM์ ๋๋ค.
Virtual DOM ์ ๊ฐ์์ DOM์ ๋๋ค. ๋ณํ๊ฐ ์ผ์ด๋๋ฉด, ์ค์ ๋ก ๋ธ๋ผ์ฐ์ ์ DOM์ ์๋ก์ด๊ฑธ ๋ฃ๋๊ฒ์ด ์๋๋ผ, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ด๋ค์ง ๊ฐ์ DOM ์ ํ๋ฒ ๋ ๋๋ง์ ํ๊ณ , ๊ธฐ์กด์ DOM๊ณผ ๋น๊ต๋ฅผ ํ ๋ค์์ ์ ๋ง ๋ณํ๊ฐ ํ์ํ ๊ณณ์๋ง ์ ๋ฐ์ดํธ๋ฅผ ํด์ฃผ๋ ๊ฒ์ด์ฃ .
์ด Virtual DOM์ ์ฌ์ฉํจ์ผ๋ก์จ, ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์์ ๋ ๋ ์ด์ ์ด๋ป๊ฒ ์ ๋ฐ์ดํธํ ์ง๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ ์๋๋ผ, ๊ทธ๋ฅ ์ผ๋จ ๋ฐ๋ ๋ฐ์ดํฐ๋ก ์ผ๋จ ๊ทธ๋ ค๋๊ณ ๋น๊ต๋ฅผ ํ ๋ค์์, ๋ฐ๋ ๋ถ๋ถ๋ง ์ฐพ์์ ๋ฐ๊ฟ์ฃผ๋ ๊ฑฐ์ฃ .
๋ค์ ๋์์์ ๋ณด์๋ฉด ์ดํดํ๊ธฐ๊ฐ ์ฝ์ต๋๋ค.
- React and the Virtual DOM (https://www.youtube.com/watch?v=muc2ZF0QIO4)
Virtual DOM ์ DOM ๋ณํ๋ฅผ ์ต์ํ์์ผ์ฃผ๋ ์ญํ ์ ํ๋๋ฐ์, ์ด ํ์๋ฅผ ์ต์ํ์ํค๋ ๊ฒ์ ์ฑ๋ฅ์ ์ผ๋ก ๋งค์ฐ ์ค์ํ ์ด์์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฆฌ์กํธ์ ๋ํด์ ๊ทธ ๋๊ตฌ๋ ์ ๋๋ก ์ค๋ช ํ๊ธฐ ์ด๋ ค์ด ๊ฒ – ์ Virtual DOM ์ธ๊ฐ? ํฌ์คํธ์์ ํ์ธํด๋ณด์ธ์.
[์ถ์ฒ: ํจ์คํธ ์บ ํผ์ค]
'Front-end > REACT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React]JSX (0) | 2022.01.01 |
---|