[React] Vite๋ฅผ ์ฌ์ฉํ React ํ๋ก์ ํธ ์์
๐ Vite๋?
Vite๋ ์ฐจ์ธ๋ ํ๋ก ํธ์๋ ๋น๋ ๋๊ตฌ๋ก React์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋งค์ฐ ๋น ๋ฅธ ๊ฐ๋ฐ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. ๋ฆฌ์กํธ ๊ฐ๋ฐ์ ๋ณดํต์ react-create-app ์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋๋ฐ ์ต๊ทผ์๋ vite๋ค์ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์์ ์ด์ ๋ํ ์๋ฃ๋ฅผ ์์ฑํด๋ณด์์ต๋๋ค. ๊ธฐ์กด ํ๊ฒฝ๋ค ๋ณด๋ค ๋ง์ด ๋น ๋ฅด๋ค๊ณ ๋ค ํฉ๋๋ค.
์ฃผ์ ํน์ง:
- โก๏ธ ๋งค์ฐ ๋น ๋ฅธ ์๋ฒ ์์: ๋ฒ๋ค๋ง ์์ด ์ฆ์ ๊ฐ๋ฐ ์๋ฒ๋ฅผ ์์
- ๐ฅ ๋น ๋ฅธ HMR (Hot Module Replacement): ๋ชจ๋ ๋จ์๋ก ์ฆ๊ฐ์ ์ธ ์ ๋ฐ์ดํธ
- ๐๏ธ ์ต์ ํ๋ ๋น๋: Rollup ๊ธฐ๋ฐ์ ํจ์จ์ ์ธ ํ๋ก๋์ ๋น๋
- ๐ง TypeScript์ JSX ์ฆ์ ์ง์: ๋ณ๋ ์ค์ ๋ถํ์
๐ ๏ธ Vite๋ก React ํ๋ก์ ํธ ์์ฑํ๊ธฐ
๐ 1๋จ๊ณ: Vite๋ก React ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
# npm ์ฌ์ฉ
npm create vite@latest my-react-app -- --template react
๐ฅ 2๋จ๊ณ: ์์กด์ฑ ์ค์น
cd my-react-app
npm install
โก 3๋จ๊ณ: ๊ฐ๋ฐ ์๋ฒ ์คํ
npm run dev
์ฝ์์ ์๋์ฒ๋ผ ๋์ค๋ฉด ์ฑ๊ณต์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์์ ์ด๋ฉด ์๋์ ๊ฐ์ด React ํ๋ฉด์ด ๋น๋๋ค! ๐
๐ ํ๋ก์ ํธ ๊ตฌ์กฐ
my-app/
โโโ index.html # HTML ์ง์
์
โโโ vite.config.js # Vite ์ค์ ํ์ผ
โโโ package.json # npm ์ค์
โโโ public/ # ์ ์ ํ์ผ
โ โโโ vite.svg # ๊ณต๊ฐ ์์
โโโ src/ # ์์ค ์ฝ๋
โโโ App.jsx # ๋ฉ์ธ ์ปดํฌ๋ํธ
โโโ main.jsx # React ์ง์
์
โโโ App.css # ์คํ์ผ
โโโ index.css # ๊ธ๋ก๋ฒ ์คํ์ผ
โโโ assets/ # ์ด๋ฏธ์ง ๋ฑ
๐งช ํต์ฌ ํ์ผ ์์
main.jsx
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>,
)
App.jsx
import { useState } from 'react'
import './App.css'
function App() {
const [count, setCount] = useState(0)
return (
<div className="App">
<h1>Vite + React</h1>
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
</div>
)
}
export default App
โ๏ธ Vite ์ค์ ์ฌ์ฉ์ํ
vite.config.js๋ฅผ ์์ ํ์ฌ ์ํ๋ ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
export default defineConfig({
plugins: [react()],
server: {
port: 3000, // ๊ฐ๋ฐ ์๋ฒ ํฌํธ ๋ณ๊ฒฝ
open: true // ์๋์ผ๋ก ๋ธ๋ผ์ฐ์ ์ด๊ธฐ
},
build: {
outDir: 'dist', // ๋น๋ ๋๋ ํ ๋ฆฌ
sourcemap: true // ์์ค๋งต ์์ฑ
}
})
๐ Vite vs Create React App (CRA)
ํน์ง Vite Create React App
์์ ์๋ | ๋งค์ฐ ๋น ๋ฆ (ES ๋ชจ๋ ์ฌ์ฉ) | ์๋์ ์ผ๋ก ๋๋ฆผ |
HMR ์๋ | ๊ฑฐ์ ์ฆ๊ฐ์ | ์๋์ ์ผ๋ก ๋๋ฆผ |
๋น๋ ์๊ฐ | ๋น ๋ฆ (Rollup ์ฌ์ฉ) | ์ค๊ฐ (Webpack ์ฌ์ฉ) |
์ค์ ๋ณต์ก๋ | ๊ฐ๋จ | ์ค๊ฐ |
์ํ๊ณ ์ฑ์๋ | ์ฑ์ฅ ์ค | ๋งค์ฐ ์ฑ์ํจ |
Vite๋ ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ๊ฐ๋ฐ ์๋๊ฐ ํจ์ฌ ๋น ๋ฅด๊ณ , ํ๋์ ์ธ JavaScript ์ํ๊ณ์ ์ ํตํฉ๋์ด ์์ด ์๋ก์ด React ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ๊ฐ๋ ฅํ ์ถ์ฒํฉ๋๋ค! ๐ช