์๋ก์ด ํ๋ก์ ํธ ์์ฑ & Bootstrap ์ฌ์ฉํ๊ธฐ ๐
์ผํ๋ชฐ ํ๋ก์ ํธ ์์ํ๊ธฐ ๐๏ธ
์ค๋๋ถํฐ ์ผํ๋ชฐ ํ๋ก์ ํธ๋ฅผ ์๋ก ๋ง๋ค์ด๋ด
์๋ค! CSS ์์ฑ์ด ๊ท์ฐฎ์ผ๋ React-Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋ ์ด์์์ ์ฝ๊ฒ ๋ณต์ฌ๋ถ์ฌ๋ฃ๊ธฐ ๋ฐฉ์์ผ๋ก ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์๋ก์ด React ํ๋ก์ ํธ ์์ฑ ๐
1๋จ๊ณ: ํ๋ก์ ํธ ์์ฑ ๐ง
- ์์
ํด๋์์ Shift + ์ฐํด๋ฆญ โ PowerShell/ํฐ๋ฏธ๋ ์ด๊ธฐ
- ํฐ๋ฏธ๋์ ๋ช
๋ น์ด ์
๋ ฅ:
npm create vite@latest
- ํ๋ก์ ํธ ํด๋๋ฅผ VSCode๋ก ์ด๊ธฐ
- ์ด๊ธฐ ์ค์ :
- CSS ํ์ผ๋ค ๋ด์ฉ ์ง์ฐ๊ธฐ
- App.js์์ ๋ถํ์ํ HTML ์ ๊ฑฐ
- ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์คํ:
npm run dev
React-Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฐ ์ค์ ๐จ
Bootstrap์ ์ฌ์ฉํ๋ ์ด์ ๐ก
- ๋ฒํผ, ๋ฉ๋ด ๋ฑ์ HTML/CSS๋ก ์ง์ ๋์์ธํ ํ์ ์์
- ์์ ์ฝ๋ ๋ณต์ฌ๋ถ์ฌ๋ฃ๊ธฐ๋ง์ผ๋ก ๋ ์ด์์ ์์ฑ ๊ฐ๋ฅ
- Bootstrap์ React์ ๋ง๊ฒ ๋ณํํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ค์น ๋ฐฉ๋ฒ ๐ฆ
1๋จ๊ณ: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
npm install react-bootstrap bootstrap
2๋จ๊ณ: CSS ํ์ผ ์ฐ๊ฒฐ
index.html์ <head> ํ๊ทธ ์์ Bootstrap CSS ์ถ๊ฐ
- ๋๋
App.js์ ๋ค์ ์ฝ๋ ์ถ๊ฐ:
import 'bootstrap/dist/css/bootstrap.min.css';
React-Bootstrap ์ฌ์ฉ๋ฒ ๐ ๏ธ
๋ฒํผ ๋ง๋ค๊ธฐ ๐
import {Button} from 'react-bootstrap'
function App(){
return (
<div>
<Button variant="primary">Primary</Button>
</div>
)
}
์๋จ ๋ด๋น๊ฒ์ด์
๋ฐ ๋ง๋ค๊ธฐ ๐งญ
import {Button, Navbar, Container, Nav} from 'react-bootstrap'
function App(){
return (
<div>
<Navbar bg="dark" variant="dark">
<Container>
<Navbar.Brand href="#home">Navbar</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="#home">Home</Nav.Link>
<Nav.Link href="#features">Features</Nav.Link>
<Nav.Link href="#pricing">Pricing</Nav.Link>
</Nav>
</Container>
</Navbar>
</div>
)
}
์ค์ํ ๊ท์น โ ๏ธ
- ๋๋ฌธ์๋ก ์์ํ๋ ์ปดํฌ๋ํธ๋ ๋ฐ๋์ ์๋จ์ import ํด์ผ ํจ
- className ๋ถ์ฌํด์ CSS ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ
๋ณด์ถฉ ์ค๋ช
๐ก
Vite vs Create React App ๐
- Vite: ์ต์ ๋น๋ ๋๊ตฌ, ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ์ HMR(Hot Module Replacement) ์ ๊ณต
- Create React App: ๊ธฐ์กด React ํ๋ก์ ํธ ์์ฑ ๋๊ตฌ
- Vite๊ฐ ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์์ ์ต๊ทผ ๋ง์ด ์ฌ์ฉ๋จ
Bootstrap ๋ฒ์ ๋ณ ์ฐจ์ด์ ๐
- Bootstrap 5: ์ต์ ๋ฒ์ , jQuery ์์กด์ฑ ์ ๊ฑฐ
- React-Bootstrap: React ์ปดํฌ๋ํธ ํํ๋ก ์ ๊ณต๋์ด ๋ React๋ต๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ธฐ์กด Bootstrap: CDN์ด๋ ์ง์ ์ค์นํ์ฌ ํด๋์ค๋ช
์ผ๋ก ์ฌ์ฉ
๋ค๋ฅธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ต์
๐ฏ
- Material-UI (MUI): Google์ Material Design ๊ธฐ๋ฐ
- Ant Design: ์ํฐํ๋ผ์ด์ฆ๊ธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Chakra UI: ์ฌํํ๊ณ ๋ชจ๋์ ๊ตฌ์กฐ
- Tailwind CSS: ์ ํธ๋ฆฌํฐ ๊ธฐ๋ฐ CSS ํ๋ ์์ํฌ
ํ๋ก์ ํธ ๊ตฌ์กฐ ์ต์ ํ ํ ๐
src/
โโโ components/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
โโโ pages/ # ํ์ด์ง ์ปดํฌ๋ํธ
โโโ styles/ # CSS ํ์ผ๋ค
โโโ utils/ # ์ ํธ๋ฆฌํฐ ํจ์๋ค
โโโ assets/ # ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ ์ ํ์ผ
์ฑ๋ฅ ์ต์ ํ ๊ณ ๋ ค์ฌํญ โก
- Tree Shaking: ํ์ํ ์ปดํฌ๋ํธ๋ง importํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ ์ต์ํ
- Code Splitting: ๋ผ์ฐํธ๋ณ๋ก ์ฝ๋ ๋ถํ ํ์ฌ ์ด๊ธฐ ๋ก๋ฉ ์๋ ๊ฐ์
- CSS-in-JS vs CSS Modules: ํ๋ก์ ํธ ๊ท๋ชจ์ ๋ฐ๋ฅธ ์คํ์ผ๋ง ๋ฐฉ์ ์ ํ