
Kim JeongHyeonFrontend Focused Fullstack Developer
CSS Modules와 Tailwind CSS의 장단점을 비교하고, 이 프로젝트에서 CSS Modules를 선택한 이유를 설명합니다.
이 포트폴리오는 CSS Modules를 사용합니다. Tailwind를 안 쓴 이유와 각각의 장단점을 비교합니다.
// Button.module.css
.button {
padding: 8px 24px;
border-radius: 9999px;
background: var(--text-primary);
color: var(--bg-primary);
}
// Button.tsx
import styles from "./Button.module.css";
function Button({ children }) {
return <button className={styles.button}>{children}</button>;
}장점:
function Button({ children }) {
return (
<button className="px-6 py-2 rounded-full bg-gray-900 text-white
dark:bg-white dark:text-gray-900 hover:opacity-80 transition">
{children}
</button>
);
}장점:
| 기준 | CSS Modules | Tailwind |
|---|---|---|
| 학습곡선 | 낮음 (표준 CSS) | 중간 (유틸리티 클래스 암기) |
| 파일 수 | 컴포넌트당 +1 (.module.css) | 0 |
| 디자인 토큰 | CSS Variables | tailwind.config |
| 다크 모드 | [data-theme] selector |
dark: prefix |
| 타입 안전성 | TypeScript plugin 필요 | className 문자열 |
| 커스터마이징 | 자유도 높음 | config 제한적 |
| 런타임 오버헤드 | 없음 | 없음 |
Tailwind이 나쁜 게 아닙니다. 팀 프로젝트에서 일관된 스타일을 빠르게 적용하는 데는 Tailwind이 더 적합할 수 있습니다. 하지만 커스텀 디자인 시스템을 구축하는 포트폴리오에서는 CSS Modules가 더 유연합니다.