7-1 패턴(7-1 Pattern)은 Sass(SCSS) 스타일 파일을 모듈화하여 관리하는 구조적인 방법이다. 프로젝트의 규모가 커질수록 스타일 파일이 복잡해지는데, 이를 정리하고 유지보수하기 위해 사용하는 방식이다.
이 패턴의 이름은 "7개의 폴더 + 1개의 메인 SCSS 파일" 구조에서 유래되었다.
/scss
│── abstracts/ # 변수, 믹스인, 함수 (재사용 가능한 유틸리티)
│── base/ # 기본 스타일 (리셋, 타이포그래피, 기본 요소 스타일)
│── components/ # 버튼, 카드, 네비게이션 같은 개별 UI 컴포넌트
│── layout/ # 전체적인 레이아웃 구조 (헤더, 푸터, 사이드바 등)
│── pages/ # 페이지별 스타일 (홈, 로그인, 대시보드 등)
│── themes/ # 테마 관련 스타일 (라이트 모드, 다크 모드 등)
│── vendors/ # 외부 라이브러리 (Bootstrap, Normalize.css 등)
│── main.scss # 모든 SCSS 파일을 import하는 메인 파일
// abstracts/_variables.scss
$primary-color: #3498db;
$secondary-color: #2ecc71;
// abstracts/_mixins.scss
@mixin flex-center {
display: flex;
align-items: center;
justify-content: center;
}
// base/_reset.scss
* {
margin: 0;
padding: 0;
box-sizing: border-bod;
}
// base/_typography.scss
body {
font-family: 'Arial', sans-serif;
color: #333;
}
// components/_button.scss
.btn {
padding: 10px 15px;
border-radius: 5px;
background-color: $primary-color;
color: white;
}
// layout/_header.scss
.header {
background-color: $primary-color;
padding: 20px;
}
// pages/_home.css
.home {
background-color: #f5f5f5;
}
// themes/_dark.scss
body {
background-color: #121212;
color: white;
}
// vendors/_bootstrap.scss
@import "bootstrap";
모든 SCSS 파일을 하나로 묶어 컴파일할 단일 엔트리 포인트 역할을 한다.
// main.scss
@import "abstracts/variables";
@import "abstracts/mixins";
@import "base/reset";
@import "base/typography";
@import "layout/header";
@import "layout/footer";
@import "components/button";
@import "components/card";
@import "pages/home";
@import "pages/about";
@import "themes/dark";
7-1 패턴은 대규모 프로젝트에서 SCSS 파일을 체계적으로 관리하는 좋은 방법이다.
작은 프로젝트에서는 필요 없을 수도 있지만, 프로젝트가 커질수록 유지보수하기 훨씬 쉬워지므로 적극적으로 활용하는 것이 좋다.