์๋ก์ด React ์ฑ ๋ง๋ค๊ธฐ
These docs are old and wonโt be updated. Go to react.dev for the new React docs.
See Start a New React Project for the recommended ways to create an app.
์ต๊ณ ์ ์ฌ์ฉ์์ ๊ฐ๋ฐ์ ๊ฒฝํ์ ์ํด ํตํฉ๋ ํด์ฒด์ธ์ ์ฌ์ฉํ์ธ์.
์ด ํ์ด์ง์์๋ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ React ํด์ฒด์ธ์ ์๊ฐํฉ๋๋ค.
- ๋ง์ ํ์ผ๊ณผ ์ปดํฌ๋ํธ ์ค์ผ์ผ๋ง
- ์๋ ํํฐ npm ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
- ์ผ๋ฐ์ ์ธ ์ค์๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌ
- CSS์ JS๋ฅผ ์ค์๊ฐ์ผ๋ก ํธ์ง
- ํ๋ก๋์ ์ฝ๋ ์ต์ ํ
์ด ํ์ด์ง์์ ์ถ์ฒํ๋ ํด์ฒด์ธ์ ์์ํ๋๋ฐ, ๋ณ๋์ ํ๊ฒฝ์ค์ ์ด ํ์ ์์ต๋๋ค.
ํด์ฒด์ธ์ด ํ์ํ์ง ์์ ์ ์์ต๋๋ค.
์์์ ์ค๋ช
ํ ๋ฌธ์ ๋ฅผ ๊ฒฝํํ์ง ๋ชปํ๊ฑฐ๋ ์์ง JavaScript ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ํธํ์ง ์๋ค๋ฉด, React๋ฅผ HTML ํ์ด์ง์์ ์ผ๋ฐ์ ์ธ <script>
ํ๊ทธ์ ์ถ๊ฐํ๊ฑฐ๋ JSX๋ฅผ ๊ณ ๋ คํ์ธ์.
์ด ๋ฐฉ๋ฒ์ด ์ ์ผ ์ฝ๊ฒ React๋ฅผ ์ด๋ฏธ ๋ง๋ค์ด์ง ์น์ฌ์ดํธ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ ๋ ๋์์ด ๋ ๊ฒ ๊ฐ์ผ๋ฉด ๋ ๋ง์ ํด์ฒด์ธ์ ์ถ๊ฐํ ์๊ฐ ์์ต๋๋ค.
์ถ์ฒ ํด์ฒด์ธ
React ํ์ ์ถ์ฒ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค
- React๋ฅผ ๋ฐฐ์ฐ๊ณ ์๊ฑฐ๋ ์๋๋ฉด ์๋ก์ด ์ฑ๊ธ ํ์ด์ง ์ฑ์ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด Create React App.
- ์๋ฒ ๋ ๋๋ง Node.js ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ณ ์๋ค๋ฉด Next.js์ ์๋ํด๋ณด์ธ์..
- ๊ณ ์ ์ ์ธ ์ฝํ ์ธ ์งํฅ์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ณ ์๋ค๋ฉด Gatsby๋ฅผ ์๋ํด๋ณด์ธ์..
- ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ์ด๋ฏธ ์๋ ์ฝ๋ ๋ฒ ์ด์ค์ ํตํฉ์ ํ๋ค๋ฉด ๋ ์ ์ฐํ ํด์ฒด์ธ.
Create React App
Create React App์ React ๋ฐฐ์ฐ๊ธฐ์ ๊ฐํธํ ํ๊ฒฝ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ํ๊ธฐ์ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ์๋ก์ด ์ฑ๊ธ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
์ด๊ฒ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ๊ณ , ์ต์ JavaScript๋ฅผ ์ฌ์ฉํ๊ฒ ํด์ฃผ๋ฉฐ, ์ข์ ๊ฐ๋ฐ ๊ฒฝํ๊ณผ ํ๋ก๋์ ์ฑ ์ต์ ํ๋ฅผ ํด์ค๋๋ค. Node 14.0.0 ํน์ ์์ ๋ฒ์ ๋ฐ npm 5.6 ํน์ ์์ ๋ฒ์ ์ด ํ์ํฉ๋๋ค. ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์๋์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
npx create-react-app my-app
cd my-app
npm start
์ฃผ์
์ฒซ ๋ฒ์งธ ์ค์ โnpxโ๋ ์ค์๊ฐ ์๋๋ฉฐ npm 5.2+ ๋ฒ์ ์ ํจํค์ง ์คํ ๋๊ตฌ์ ๋๋ค.
Create React App ์ ๋ฐฑ ์ค๋ ๋ก์ง์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. Create React App ์ ํ๋ฐํธ ์ค๋ ๋น๋ ํ์ดํ๋ผ์ธ๋ง ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ํ๋ ์ด๋ค ๋ฐฑ์๋์๋ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. Create React App๋ Babel์ด๋ webpack๊ฐ์ build ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋, ์ค์ ์์ด๋ ๋์ํฉ๋๋ค.
ํ๋ก๋์ ์ ๋ฐฐํฌํ ์ค๋น๊ฐ ๋์์ ๋, npm run build ๋ฅผ ์คํํ๋ฉด build ํด๋ ์์ ์ ์ํ ์ฑ์ ์ต์ ํ๋ Build๋ฅผ ์์ฑํฉ๋๋ค. README ๋ ์ฌ์ฉ์ ๊ฐ์ด๋์์ ๋ ์์ธํ ์ฌํญ์ ๋ณผ ์ ์์ต๋๋ค.
Next.js
Next.js๋ ์ธ๊ธฐ ์๋ ๊ฒฝ๋์ ํ๋ ์์ํฌ๋ก React๋ก ๋ง๋ค์ด์ง ์คํํฑ ์๋ฒ ๋ ๋๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ์ผ๋ง๊ณผ ๋ผ์ฐํ ํด๊ฒฐ์ฑ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ Node.js๋ฅผ ์๋ฒ ํ๊ฒฝ์ผ๋ก ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Next.js๋ฅผ ์ ์ ๊ฐ์ด๋๋ฅผ ๋ณด๋ฉด์ ๋ฐฐ์๋ณด์ธ์.
Gatsby
Gatsby๋ ์ ์ ์น์ฌ์ดํธ๋ฅผ React๋ก ๋ง๋ค๊ธฐ์๋ ์ต๊ณ ์ ๋ฐฉ๋ฒ์ ๋๋ค. React ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ๊ฒ ํด์ฃผ์ง๋ง ๋ฏธ๋ฆฌ ๋ ๋๋ง ๋ HTML๊ณผ CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ๋ก๋๋ฉ๋๋ค.
Gatsby๋ฅผ ์ ์ ๊ฐ์ด๋์ ์คํํฐ ํคํธ๋ฅผ ๋ณด๋ฉด์ ๋ฐฐ์๋ณด์ธ์
๋ ์ ์ฐํ ํด์ฒด์ธ
๋ฐ์ ์๋ ํด์ฒด์ธ์ ์กฐ๊ธ ๋ ๋ง์ ์ ํ๊ณผ ๋ค๋ฅด๊ธฐ ์ฌ์ด ์ต์ ์ ๋๋ค. ์๋ จ๋ ์ฌ์ฉ์๋ค์๊ฒ ์ถ์ฒํฉ๋๋ค.
- Neutrino๋ webpack์ ์ฅ์ ๊ณผ React์ ๋จ์ํจ๊ณผ ๋ฏธ๋ฆฌ ์ค์ ๋ ์ฑ๊ณผ ์ปดํฌ๋ํธ๋ฅผ ํฉ์น ๊ฒ์ ๋๋ค.
- Nx๋ ํ์คํ ๋ชจ๋ ธ๋ ํฌ ๊ฐ๋ฐ์ ์ํ ๋๊ตฌ์ด๋ฉฐ, React, Next.js, Express ๋ฑ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
- Parcel์ React์ ํจ๊ป ์ฌ์ฉํ ์ ์๊ณ ๋น ๋ฅด๊ณ ์ค์ ์ด ํ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์ bundler์ ๋๋ค.
- Razzle์ ์๋ฒ ๋ ๋๋ง ํ๋ ์์ํฌ๋ฉฐ ์ค์ ์ด ํ์ ์์ง๋ง, Next.js๋ณด๋ค ๋ค๋ฃจ๊ธฐ ์ฝ์ต๋๋ค.
ํด์ฒด์ธ์ ์ง์ ๋ง๋ค๊ธฐ
JavaScript build ํด์ฒด์ธ์ ์ฃผ๋ก ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด์์ต๋๋ค
- Yarn ํน์ npm๊ฐ์ package ๋งค๋์ ๋ ์๋ ํํฐ ํจํค์ง์ ๋ฐฉ๋ํ ์ํ๊ณ๋ฅผ ํ์ฉํ ์ ์๊ฒ ํ๋ฉฐ, ์ฝ๊ฒ ์ค์นํ๊ณ ์ ๋ฐ์ดํธํ ์ ์๊ฒ ํฉ๋๋ค.
- webpack ์๋๋ฉด Parcel ๊ฐ์ bundler๋ ์ฝ๋๋ฅผ ๋ชจ๋๋ฐฉ์์ผ๋ก ์์ฑํ ์ ์๊ฒ ํ๊ณ ์ด๋ฅผ ์์ package๋ก ๋ฌถ์ด์ ๋ก๋ฉ ์๊ฐ์ ์ต์ ํํ ์ ์์ต๋๋ค.
- Babel ๊ฐ์ ์ปดํ์ผ๋ฌ๋ ์ต์ JavaScript ์ฝ๋๋ฅผ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์๋ ์คํ๋๊ฒ ๋์์ค๋๋ค.
๋ง๋ JavaScript ํด์ฒด์ธ์ ์ํ์ ๋ค๋ฉด, ์ด ๊ฐ์ด๋๋ฅผ ๋ณด์ธ์.
์ปค์คํ ํด์ฒด์ธ์ด ์ ๋๋ก ์ค์ ๋์ด ์๋์ง ์์ง ๋ง์ธ์.