React๋ Javascript ๊ธฐ๋ฐ์ ๋๊ตฌ๋ก, JS๋ฅผ ๋ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค.
Java, Python๊ณผ ๊ฐ์ ์ธ์ด๋ค์ JS์ ๋ค๋ฅด๊ฒ ๊ฐ๊ฐ ๋ธ๋ผ์ฐ์ ์์ด ์คํ๋ ์ ์๋๋ก ํ๋ ์คํ ํ๋ก๊ทธ๋จ์ ๊ฐ๊ณ ์์๋ค. JS๋ ๊ทธ๋ฌํ ํ๋ก๊ทธ๋จ์ด ํ์ํ๊ฒ ๋์๋๋ฐ, ๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด Node.js์ด๋ค. JS๋ ๋ธ๋ผ์ฐ์ ์์๋ง ์๋ํ๊ธฐ ๋๋ฌธ์ Node.js๊ฐ ์์ด์ผ ๋ธ๋ผ์ฐ์ ์ธ์ ๋ค๋ฅธ ํ๊ฒฝ์์๋ ์๋ํ ์ ์๋ค.
์๋ฐ์ ํ์ด์ฌ์๋ ๋ค๋ฅธ ์ฌ๋๋ค๋ ๋ค์ด๋ก๋ ๋ฐ์์ ํน์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ๋๋ก ๊ณต์ ํ๋ ์ฌ์ดํธ๊ฐ ์กด์ฌํ๋ค. ์๋ฐ๋ Maven, Gradle ๋ฑ์ด ์๊ณ , ํ์ด์ฌ์ PYPI๋ผ๋ ์ฌ์ดํธ๊ฐ ์๋ค. ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ์๋ NPM์ด๋ผ๋ ์ฌ์ดํธ๊ฐ ๋ฑ์ฅํ๊ฒ ๋๋ค(npmjs.com). ๊ทธ๋ฆฌ๊ณ npm๋ณด๋ค ๋ ๋น ๋ฅธ ์๋๋ก ๋ค์ด๋ก๋ ๋ฐ๋๋ก ํ๊ธฐ ์ํด์ ํ์ด์ค๋ถ์์ yarn์ ๋ง๋ค์๋ค.
์ฐ๋ฆฌ๊ฐ ํด๋๋ฅผ ๋ง๋ ๋ค๊ณ ํ๋ฉด, ์์ฃผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ง์ฐ์ค๋ฅผ ์ด์ฉํด์ โ์ ํด๋ ๋ง๋ค๊ธฐโ๋ฅผ ํด๋ฆญํ๋ ๊ฒ์ด์๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ GUI(graphic user interface) ๋ผ๊ณ ํ๋ค.
๋ฐ๋ฉด ๋ง์ฐ์ค๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ ํด๋๋ฅผ ๋ง๋ค ์๊ฐ ์๋๋ฐ, ์ด๋ด ๋ ์ฐ์ด๋ ๊ฒ์ด CLI ๋ช
๋ น์ด(command line interface)์ด๋ค. ๋ฆฌ๋
์ค ๊ธฐ๋ฐ์ CLI ๋ช
๋ น์ด๋ ์์ผ๋ก ๊ฐ๋ฐ์ ํ๋ฉด์ ์์ฃผ ์ฌ์ฉํ ์์ ์ด๋๊น ์์๋์ผ๋ฉด ์์ฝ๊ฒ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋ค!
์ค์น๋ฅผ ๋ง์น๊ณ ๋ณด์ด๋ VS Code ์์ ํด๋๋ค์ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ผ๊ณ ํ๋ค. ๊ฐ๊ฐ์ ํด๋๋ค์ด ์ด๋ค ๋ด์ฉ์ ๋ด๊ณ ์๋์ง ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ HTML, CSS, JS๋ฅผ ํ์ฉํ์ฌ ์์ค์ฝ๋๋ฅผ ๋ง๋ค ๋ ํ๋์ ์์ค์ฝ๋์ ์ธ ๊ฐ์ง์ ๋ชจ๋ ๋ด์ฉ์ ๋ฃ์ผ๋ฉด ๋๋ฌด ๋ณต์กํ๋ค. ๋ฐ๋ผ์ ์ค๋ฌด์์๋ 3๊ฐ์ง ๊ฐ๊ฐ์ ํ์ผ์ ๋ฐ๋ก ๋ง๋ค๊ณ , ํ์ํ ๋ ์๋ก ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ค. React๋ฅผ ํ์ฉํ๋ฉด ์ด๋ ๊ฒ ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์งค ์ ์๋ค!
๋จผ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด export
๋ฅผ ์จ์ ํจ์๋ฅผ ํ๋ ๋ง๋ค์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ return ๋ค์ html ๋ ์ด์์์ ์์ฑํ๋ค.!
๊ทธ๋ฆฌ๊ณ import
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ CSS ํ์ผ์ JS๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ด ๋ ์ ํ์ ์ผ๋ก ํ์ํ ๋ณ์๋ง์ ๋ถ๋ฌ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ๊ต์ฅํ ํจ์จ์ ์ด๋ค!
๊ทธ๋ ๋ค๋ฉด HTML ํ์ผ๋ ์๋๋ฐ ์ด๋ป๊ฒ JS ํ์ผ์ ๋ธ๋ผ์ฐ์ ์ ๋์ธ ์ ์์๊น? ์ด๋ yarn์ ํ์ฉํ๋ฉด ๋๋ค. yarn ๋ช ๋ น์ด ์ค yarn dev๋ฅผ ์ฌ์ฉํ๋ฉด JSํ์ผ์ html๋ก ๋ฐ๊ฟ์ค ๋ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ์คํํ์ฌ ๋ฐ๋ก HTMl ํ์ผ ์์ด JS ํ์ผ๋ง์ผ๋ก๋ ๋ธ๋ผ์ฐ์ ์ ํ์ด์ง๋ฅผ ๋์ธ ์ ์๋ค.
React์์๋ ์ฐ๋ฆฌ๊ฐ ๊ธฐ์กด์ ์ฌ์ฉํ๋ HTML ๋์ react ์ ์ฉ html์ธ JSX๋ฅผ ์ฌ์ฉํ๋ค.
์๋ ์ฌ์ฉํ๋ HTML
<div>
<div class="title">์ ๋ชฉ</div>
<button onclick="alert()">๋ฒํผ</button>
</div>;
JSX
<div>
<div className="title">์ ๋ชฉ</div>
<button onClick="alert()">๋ฒํผ</button>
</div>;
์ต์ข ์ ์ผ๋ก ์์ค์ฝ๋๊ฐ ์คํ๋ ๋์๋ JSX๊ฐ HTML๋ก ์๋ ๋ณํ๋์ด ์คํ๋๋ค.
CSS๋ฅผ JS ๋ณ์์ ๋ฃ์ด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ๋ฐ๋ก CSSํ์ผ์ ๋ฐ๋ก ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ๊ฐ๊ฒฐํ ๋ฐฉ์์ด๋ค. ๋ณ์๋ช
์์ฒด๊ฐ HTML ํ๊ทธ์ฒ๋ผ ์ฐ์ด๊ธฐ ๋๋ฌธ์ ํ๊ทธ์ ์๋ฏธ๋ฅผ ๋ถ์ฌํ ์ ์๊ณ , className์ ์
๋ ฅํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์ ์ฒด์ ์ธ ์ฝ๋์ ๊ธธ์ด๊ฐ ์งง์์ง๋ค๋ ์ฅ์ ์ด ์๋ค!
CSS ํ์ผ์ ์คํ์ผ ์์ฑ์ ๋ฐ๋ก ๋ง๋๋ ๋ฐฉ์
title {
width: 996px;
height: 52px;
}
CSS-In-JS
const Title = styled.div`
width: 996px;
height: 52px;
`;
CSS-IN-JS๋ HTML ํ๊ทธ์ฒ๋ผ ์ฐ์ผ ์ ์๋ค.
<Title>Hello World</Title>