Frontend ๊ฐ๋ฐ ๊ธฐ์
HTML
- HTML(Hyper Text Markup Language)์ ์น ํ์ด์ง๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ ๋งํฌ์ ์ธ์ด
- ์นํ์ด์ง์ ๊ตฌ์กฐ์ ์ฝํ ์ธ ๋ฅผ ํ์
- ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๋ HTML ์ฝ๋๋ฅผ ํด์ํ์ฌ ์น ํ์ด์ง ๋ ๋๋ง
- HTML์ ์น ํ๋ก ํธ์๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ์ ์ด๋ฉฐ, CSS์ JavaScript์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ณด๋ค ๋ค์ํ๊ณ ๋์ ์ธ ์นํ์ด์ง ๊ตฌํ ๊ฐ
CSS
- CSS(Cascading Style Sheets)๋ ์น ํ์ด์ง์ ๋ ์ด์์, ์คํ์ผ ๋ฐ ๋์์ธ์ ์ ์ํ๋ ์คํ์ผ ์ํธ ์ธ์ด
- ์น ํ์ด์ง์ ๋์์ธ๊ณผ ๋ ์ด์์์ ๊พธ๋ฏธ๋ ๋ฐ ์ค์ํ ์ญํ
- ์ต๊ทผ์๋ CSS3์์ ๋ค์ํ ๊ธฐ๋ฅ๊ณผ ํจ๊ณผ๋ฅผ ์ถ๊ฐํ์ฌ, ๋ณด๋ค ๋ค์ํ๊ณ ํ๋ถํ ์น ๋์์ธ ๊ตฌํ ๊ฐ๋ฅ
๐ ์คํ์ผ ์ ์
CSS๋ HTML ์์์ ์คํ์ผ ์ ์
์คํ์ผ์ ํ ์คํธ, ์์, ๋ ์ด์์์ ํฌํจํจ.
๐ ์ ์ฉ ์ฐ์ ์์
CSS๋ ์คํ์ผ์ ์ ์ฉํ๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ง.
์คํ์ผ์ ์ ์ธ๋ ์์น, ์ ํ์์ ํน์ ์ฑ ๋ฑ์ ๊ณ ๋ คํ์ฌ ์ ์ฉ
๐ ์์
CSS๋ ์์ ์์์ ์คํ์ผ์ ํ์ ์์๋ก ์์.
๋ฐ๋ผ์, ํ์ ์์์ ์ง์ ์คํ์ผ์ ์ ์ฉํ์ง ์์๋ ์์ ์์์ ์คํ์ผ์ ์์๋ฐ์ ์ ์์.
JavaScript
- JavaScript๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ ์ผ๋ก ์๋ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- HTML, CSS์ ํจ๊ป ์น ๊ฐ๋ฐ์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ์ ๋ก ์ฌ์ฉ๋จ.
๐ ๊ฐ์ฒด ๊ธฐ๋ฐ
JavaScript๋ ๊ฐ์ฒด ๊ธฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด.
๋ชจ๋ ๊ฒ์ ๊ฐ์ฒด ์ทจ๊ธํ๋ฉฐ, ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ์์์ ํตํด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์์.
๐ ๋์ ์ธ ํ์ ์ง์
JavaScript๋ ๋์ ์ผ๋ก ํ์ ์ง์ ๊ฐ๋ฅ
๋ณ์๋ฅผ ์ ์ธํ ๋ ํ์ ์ ์ง์ ํ์ง ์๊ณ , ๋ณ์๋ฅผ ์ฌ์ฉํ ๋ ๊ทธ ํ์ ์ด ๊ฒฐ์ ๋จ.
๐ ์ด๋ฒคํธ ๊ธฐ๋ฐ
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ์ ๋ํ ์ฒ๋ฆฌ ์ํ
๐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด
JavaScript๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก, ์น ๋ธ๋ผ์ฐ์ ์์ ์คํ๋จ.
JavaScript๋ ํ๋ก ํธ์๋์์ ํ์์ ์ธ ๊ธฐ์ ๋ก, Node.js๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ์ฌ์ด๋ ๊ฐ๋ฐ์๋ ์ฌ์ฉ๋๊ณ ์์.
React
- React๋ Facebook์์ ๊ฐ๋ฐํ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- React๋ ์ ์ธ์ ์ด๋ฉฐ, ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ UI๋ฅผ ๋์ฑ ์ฝ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๊ฒ ๋ง๋ฆ
๐ ๊ฐ์ DOM(Virtual DOM) ๊ธฐ๋ฐ
React๋ ๊ฐ์ DOM์ ์ฌ์ฉํ์ฌ, ๋ณ๊ฒฝ์ฌํญ์ ์ต์ํ์ผ๋ก ์ค์ด๊ณ , ๋น ๋ฅธ ๋ ๋๋ง ์๋ ์ ๊ณต
๐ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ
React๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ์ฌ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์์๋ฅผ ๋ง๋ค ์ ์์
๐ ์ํ(State) ๊ด๋ฆฌ
React๋ ์ํ(State)๋ฅผ ํตํด, ์ปดํฌ๋ํธ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ ๊ด๋ฆฌํ ์ ์์
๐ JSX ๋ฌธ๋ฒ
React๋ JSX ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ, JavaScript์ HTML์ ๊ฒฐํฉํ์ฌ UI๋ฅผ ์ ์ํ ์ ์์
React๋ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ํตํด UI๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ , ๋น ๋ฅด๊ฒ ๋ ๋๋ง ํ ์ ์์
React๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, React Native๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๊ฐ๋ฐ ๊ฐ๋ฅ
SPA(Single Page Application)
- ๋ชจ๋ ์ฝํ ์ธ ๋ฅผ ๋จ์ผ ํ์ด์ง ๋ด์์ ๋์ ์ผ๋ก ๋ก๋ฉํ์ฌ ํ๋ฉด ๊ฐฑ์ ์ ์ํํ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
๐ ์ด๊ธฐ ๋ก๋ฉ ์๋ ๋น ๋ฆ
๋ชจ๋ ํ์ด์ง๋ฅผ ๋ก๋ฉํ์ง ์๊ณ , ์ต์ด ํ ๋ฒ๋ง ํ์ด์ง ์ ์ฒด๋ฅผ ๋ก๋ฉํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋น ๋ฆ
๐ ๋ถ๋ถ์ ์ธ ํ๋ฉด ๊ฐฑ์ ๊ฐ๋ฅ
์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์์ฒญํ๊ณ , ์ด๋ฅผ ๋ฐ์์์ ๋ถ๋ถ์ ์ธ ํ๋ฉด ๊ฐฑ์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ฉํ์ง ์์๋ ๋์ด์ ๋น ๋ฅธ ์๋๋ก ํ๋ฉด์ ๊ฐฑ์ ํ ์ ์์
๐ ์ฌ์ฉ์ ๊ฒฝํ์ด ์ข์
์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ฉํ์ง ์๊ณ ๋ ํ๋ฉด์ ๊ฐฑ์ ํ๋ฏ๋ก ์ฌ์ฉ์์ ์์ ํ๋ฆ์ด ์ ๋์ด์ง
SPA๋ React, Angular, Vue.js ๋ฑ์ ํ๋ ์์ํฌ์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์ด๋ฅผ ํตํด ๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์.
ํ์ง๋ง SEO(Search Engine Optimization)์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์๊ธฐ ๋๋ฌธ์, SEO๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋ฐฉ๋ฒ์ ๊ณ ๋ คํด์ผ ํจ.
DOM(Document Object Model)
- HTML, XML, XHTML ๋ฌธ์์ ๊ตฌ์กฐํ๋ ํํ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค
- ์น ํ์ด์ง๋ฅผ JavaScript ๋ฑ์์ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๋๋ก ํจ
- DOM์ ๋ฌธ์ ๋ด์ ์์๋ฅผ ๊ฐ์ฒด๋ก ๋ํ๋ด๋ฉฐ, ์ด๋ฅผ ํตํด JavaScript ๋ฑ์์ ์์์ ์ ๊ทผํ๊ณ , ์์ /์ถ๊ฐ/์ญ์ ๋ฑ์ ๋์ ์ธ ์กฐ์ ์ํ ๊ฐ๋ฅ
SSR(Server Side Rendering)
- ์๋ฒ๋ก๋ถํฐ ์์ ํ๊ฒ ๋ง๋ค์ด์ง HTML ํ์ผ์ ๋ฐ์์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋ง ํ๋ ๋ฐฉ์
- MPA(Multi Page Application)์ SSR ๋ฐฉ์ ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ๊ฐ ์ด๊ธฐ ํ๋ฉด์ ๋ก๋ํ๊ธฐ ์ํด ์๋ฒ์ ์์ฒญ ๋ณด๋.
- ์๋ฒ๋ ํ๋ฉด์ ํ์ํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ ๋ชจ๋ ์ฝ์
ํ๊ณ ,
CSS๊น์ง ๋ชจ๋ ์ ์ฉํด์ ๋ ๋๋ง ์ค๋น๋ฅผ ๋ง์น HTML๊ณผ JS์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์๋ต์ผ๋ก ์ ๋ฌ - ๋ธ๋ผ์ฐ์ ์์๋ ์ ๋ฌ ๋ฐ์ ํ์ด์ง ๋ก๋
- ๊ทธ ํ, ๋ธ๋ผ์ฐ์ ๊ฐ JS ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ HTML์ ์คํ
์ด ๋, ์์ ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด?
์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฒ HTML๋ก ํ๋ฉด์ ํ์ํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ค์ ๋ค์ด๋ฐ์ ์์ผ ํจ.
์ด๋ฐ ์ด์ ๋ก ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ์ผ๋ฉด ์๋ก๊ณ ์นจ ๋์ด ํ๋ฉด์ด ๊น-๋นก์ธ ํ์ ํ์๋จ.
CSR(Client Side Rendering)
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ถ๋ถ๋ง ์๋ต ๋ฐ์ ๋ ๋๋ง ํ๋ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ์์ ์ด๊ธฐํ๋ฉด์ ๋ก๋ํ๊ธฐ ์ํด ์๋ฒ์ ์์ฒญ ๋ณด๋
- ์๋ฒ๋ ํ๋ฉด์ ํ์ํ๋ ๋ฐ ํ์ํ ์์ ํ ๋ฆฌ์์ค๋ฅผ ์๋ต
๐ก์ด ๋, CSR๊ณผ SSR์ ์ฐจ์ด์ ์ CSR์ ๋ชจ๋ JS ํ์ผ์ ๋ค์ด๋ฐ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด SSR๋ณด๋ค ์ค๋ ๊ฑธ๋ฆผ - ์ด ๋๋ฌธ์ CSR์ SSR๊ณผ ๋ค๋ฅด๊ฒ ํ๋ฉด์ด ๊น๋นก์ด์ง ์๊ณ ๋ฐ๋ก ์์ ๋ ๋ฐ์ดํฐ ํ์๋จ.
CSR์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ SSR๋ณด๋ค ๋น ๋ฅด๊ณ , ์๋ฒ ๋ถํ๊ฐ ์ ์.
Virtual DOM
- React์ ๊ฐ์ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ ์์ํฌ์์ ์ฌ์ฉ๋๋ ๊ฐ๋
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ DOM ์กฐ์์ ์ต์ ํํ๊ธฐ ์ํด ๊ฐ๋ฐ
DOM(Document Object Model)์ HTML, XML ๋๋ XHTML ๋ฌธ์์ ๊ตฌ์กฐํ๋ ํํ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ฅผ ํตํด JavaScript ๋ฑ์์ ๋ฌธ์ ๋ด์ ์์๋ฅผ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ DOM ์กฐ์์ ์ฑ๋ฅ ์ด์๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, DOM ์์๋ฅผ ์ถ๊ฐ, ์์ , ์ญ์ ํ ๋๋ง๋ค ๋ ๋๋ง ์์ง์ ์ด์ ๋ํ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๊ณ , ๋ ์ด์์์ ์ ๋ฐ์ดํธํ๋ ์์ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํด์ผ ํฉ๋๋ค. ์ด๋ฌํ ์์ ์ ๋งค์ฐ ๋๋ฆฌ๊ณ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค.
Virtual DOM์ ์ด๋ฌํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค.
Virtual DOM์ ์ค์ DOM๊ณผ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ฐ์์ DOM์ ์์ฑํ์ฌ, ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ ์ ๊ฐ์์ DOM์์ ๋จผ์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ํ๊ณ , ์ค์ DOM์ ๋ฐ์ํ ๋ ํ์ํ ์ต์ํ์ ๋ณ๊ฒฝ์ฌํญ๋ง ์ ์ฉํฉ๋๋ค.
์ด๋ฅผ ํตํด DOM ์กฐ์ ์์
์ด ์ต์ํ๋์ด ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
React์์๋ Virtual DOM์ ์ฌ์ฉํ์ฌ, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ฐ์์ DOM์ ๋ค์ ๋ ๋๋งํ๊ณ , ๋ณ๊ฒฝ๋ ๋ด์ฉ๋ง ์ค์ DOM์ ๋ฐ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด React๋ ๋งค์ฐ ๋น ๋ฅธ ๋ ๋๋ง ์๋์ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค.