ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ์คํ์ผ์ ์ ์ฉํ ๋ style.css์ฒ๋ผ ์ผ๋ฐ CSS ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์๊ณ ,
.module.css๋ผ๋ ์กฐ๊ธ์ ์์ํ ํ์ฅ์๋ฅผ ๋ง์ฃผ์น๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
์ด ๋์ ์ด๋ป๊ฒ ๋ค๋ฅด๊ณ , ์ธ์ ๋ฌด์์ ์จ์ผ ํ ๊น์?
CSS(Cascading Style Sheets)๋ HTML ๋ฌธ์์ ์๊ฐ์ ํํ์ ๋ด๋นํ๋ ์คํ์ผ๋ง ์ธ์ด์ ๋๋ค.
/* style.css */
.button {
background-color: #4caf50;
color: white;
}
<button className="button">ํด๋ฆญ</button>
CSS Module์ ์ปดํฌ๋ํธ ๋จ์๋ก ์คํ์ผ์ ์บก์ํํ๋ ๋ฐฉ์์
๋๋ค.
ํ์ผ ์ด๋ฆ์ด Something.module.css์ฒ๋ผ ๋์ด ์๊ณ , JS/TS ํ์ผ์์ ๊ฐ์ฒด์ฒ๋ผ ๋ถ๋ฌ์์ ์ฌ์ฉํฉ๋๋ค.
/* Button.module.css */
.button {
background-color: #4caf50;
color: white;
}
// Button.tsx
import styles from './Button.module.css';
<button className={styles.button}>ํด๋ฆญ</button>
์ด๋ ๊ฒ ํ๋ฉด ์ด button ํด๋์ค๋ ์ค์ง ์ด ์ปดํฌ๋ํธ์์๋ง ์ ์ฉ๋ฉ๋๋ค.
| ํญ๋ชฉ | ์ผ๋ฐ CSS (.css) | CSS Module (.module.css) |
|---|---|---|
| ์ ์ฉ ๋ฒ์ | ์ ์ญ | ๋ก์ปฌ (์ปดํฌ๋ํธ ๋จ์) |
| ํด๋์ค ์ถฉ๋ | ๋ฐ์ ๊ฐ๋ฅ (์ฃผ์ ํ์) | ์ถฉ๋ ์์ (์๋ ํด์ ์ฒ๋ฆฌ) |
| ์คํ์ผ ์ฌ์ฉ ๋ฐฉ์ | className="..." | className={styles.class} |
| ์ฝ๋ ์ ์ง๋ณด์ค | ๊ท๋ชจ๊ฐ ์ปค์ง๋ฉด ์ด๋ ต๋ค | ์ปดํฌ๋ํธ๋ณ๋ก ๊ด๋ฆฌ ์ฌ์ |
| ์ ์ธ ์์น | ์ด๋์๋ ๊ฐ๋ฅ | importํ ์ปดํฌ๋ํธ ๋ด์์๋ง ์ฌ์ฉ |
| ๊ถ์ฅ ์ํฉ | ์ ์ฒด์ ์ธ ๋ ์ด์์, ํฐํธ, ๊ณตํต ์คํ์ผ | ์ปดํฌ๋ํธ ์คํ์ผ, ์ฌ์ฌ์ฉ ์ปดํฌ๋ํธ |
src/
โโโ components/
โ โโโ Button.tsx
โ โโโ Button.module.css
โโโ App.tsx
โโโ global.css
.button {
background-color: royalblue;
color: white;
padding: 0.5rem 1rem;
border-radius: 4px;
border: none;
font-weight: bold;
}
import React from 'react';
import styles from './Button.module.css';
const Button: React.FC = () => {
return <button className={styles.button}>๋๋ฌ์ฃผ์ธ์</button>;
};
export default Button;
import React from 'react';
import './global.css'; // ์ ์ญ CSS
import Button from './components/Button';
function App() {
return (
<div className="app">
<h1>CSS vs CSS Module</h1>
<Button />
</div>
);
}
export default App;
| ์ํฉ | ์ถ์ฒ ๋ฐฉ์ |
|---|---|
| ๋ฆฌ์ , ํฐํธ, ์ ์ญ ํ ๋ง ์ค์ | ์ผ๋ฐ CSS |
| ๋ฒํผ, ์นด๋, ์น์ ๋ฑ ๊ฐ๋ณ UI ์ปดํฌ๋ํธ | CSS Module |
| ๋๊ท๋ชจ ํ ํ๋ก์ ํธ | CSS Module (์ถฉ๋ ๋ฐฉ์ง) |
์ ์ญ ์คํ์ผ์
.css, ์ปดํฌ๋ํธ ์คํ์ผ์.module.css๋ก!
React์์ CSS๋ฅผ ๋ค๋ฃฐ ๋๋ ๋จ์ํ ๋ณด์ด๋ ๊ฒ๋ง ์๊ฐํ์ง ๋ง๊ณ ,
๊ตฌ์กฐ์ ์ผ๋ก ์คํ์ผ์ด ์ด๋๊น์ง ์ํฅ์ ๋ฏธ์น๋๊ฐ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
CSS Module์ ์ ํ์ฉํ๋ฉด ์ ์ง๋ณด์๋ ์ฌ์์ง๊ณ , ํ์ ๊ฐ ์ถฉ๋๋ ์ค์ผ ์ ์์ด์.