[SCSS] 7-1 Architecture (7-1패턴 / 폴더 구조)

2024. 1. 17. 02:45· STUDY 📒/CSS & SCSS & SASS
목차
  1. 1. abstracts
  2. 2. vendors
  3. 3. base
  4. 4. layout ( patials )
  5. 5. components ( modules )
  6. 6. pages
  7. 7. themes
  8. 8. main

scss 프로젝트를 구성하는 효과적인 모듈식 방법 중 하나가 7-1 패턴이다.

 

7-1은 7개의 폴더와 하나의 파일을 의미한다.

 

sass/
|
|– abstracts/
|   |– _variables.scss    # Sass Variables
|   |– _mixins.scss       # Sass Mixins
|
|– vendors/
|   |– _bootstrap.scss    # Bootstrap
|
|– base/
|   |– _reset.scss        # Reset/normalize
|   |– _typography.scss   # Typography rules
|
|– layout/
|   |– _navigation.scss   # Navigation
|   |– _grid.scss         # Grid system
|   |– _header.scss       # Header
|   |– _footer.scss       # Footer
|   |– _sidebar.scss      # Sidebar
|   |– _forms.scss        # Forms
|
|– components/
|   |– _buttons.scss      # Buttons
|   |– _carousel.scss     # Carousel
|   |– _cover.scss        # Cover
|   |– _dropdown.scss     # Dropdown
|
|– pages/
|   |– _home.scss         # Home specific styles
|   |– _contact.scss      # Contact specific styles
|
|– themes/
|   |– _theme.scss        # Default theme
|   |– _admin.scss        # Admin theme
|
 – main.scss              # Main Sass input file

 

7개의 폴더

 

1. abstracts

abstracts 폴더는 프로젝트 전체에서 사용되는 모든 Sass 도구와 도우미를 담고 있다.

모든 전역변수나 함수, mixin 및 표시자를 넣어주면 된다.

  • _variables.scss
  • _mixins.scss
  • _ functions.scss
  • _placeholders.scss

파일의 크기가 커지거나 프로젝트 규모가 큰 경우 abstracts 폴더 안에서 테마별로 폴더를 분리해서 사용하면 좋다.

 

2. vendors

프로젝트에서 사용하는 외부 라이브러리 및 프레임워크의 모든 CSS 파일을 담고 있다.

  • _bootstrap.scss
  • _ jquery-ui.scss
  • _select2.scss

만약 외부 vendors의 있는 파일들을 재정의해야 하는 경우 sass 가이드라인에서는 vendors-extensions라는 8번째 폴더를 새롭게 만들어서 각 파일별로 관리를 하는 것을 권장하고  있다.

이는 외부 라이브러리 및 프레임워크의 CSS 파일을 직접적으로 편집하는 것을 피하기 위함이다.

 

3. base

프로젝트의 사용구 코드라고 부를 수 있는 내용을 담고 있다.

사이트 전반에 사용될 폰트, 디폴트 스타일이 여기에 해당된다.

  • _base.scss (HTEML 요소 - html, body 등 디폴트)
  • _reset.scss (css 초기화)
  • _ typography.scss (폰트)
  • _animations.scss (@keyframes를 포함한 애니메이션)

 

4. layout ( patials )

사이트 구조에 해당하는 레이아웃

  • _grid.scss
  • _header.scss
  • _ footer.scss
  • _sidebar.scss
  • _forms.scss

폴더 이름을 선호하는 항목에 따라 layoutg이나 patials라는 폴더명으로 사용하기도 한다.

 

5. components ( modules )

layout보다 더 작은 구성 요소들을 담는다.

소형 layout 같은 의미로 사이트 내에서 재사용 가능한 작은 부분들 의미, buttons, slider, loader, widgets 등 포함

  • _buttons.scss
  • _media.scss
  • _ carousel.scss
  • _thumbnails.scss

당연히 컴포넌트 구성에 따라 아주 다양한 폴더와 파일들로 구성될 수 있다.

components폴더는 선호하는 항목에 따라 modules라고도 불리며 사용된다.

 

6. pages

모든 페이지가 동일한 스타일을 사용하지는 않기 때문에, 페이지 고유의 스타일이 있는 경우 페이지 이름을 딴 파일을 만들어서 이 폴더에 넣어 사용한다.

  • _home.scss
  • _notice.scss

 

7. themes

대규모 사이트와 애플리케이션에는 다양한 모드의 테마를 사용하고는 하는데, 각 모드에 따라서 각기 다른 스타일을 지정하여 담아두는 곳이다.

  • _themes.scss
  • _admin.scss

 

8. main

main.scss

 

(각 폴더에 _index.scss를 삽입 후 @forward를 넣어 연결한 상태에서의 이미지)

 

 

main.scss에서 관리하는 방법은 sass 가이드라인에서 많이 소개한다.

7-1이라고 해서 꼭 지켜야 할 필요는 없다.

필요한 폴더만 만들어서 사용하면 되기 때문에 보통 n-1 패턴으로 사용되기도 한다.

 

 

 

 

 

 

 

참고 : https://sass-guidelin.es/#architecture

 

Sass Guidelines

An opinionated styleguide for writing sane, maintainable and scalable Sass.

sass-guidelin.es

 

참고 : https://www.learnhowtoprogram.com/user-interfaces/building-layouts-preprocessors/7-1-sass-architecture

 

참고 : https://mine-it-record.tistory.com/594

반응형

'STUDY 📒 > CSS & SCSS & SASS' 카테고리의 다른 글

[SCSS] @import 대신 @use, @forward 사용 이유, 사용 방법  (0) 2024.01.17
diaplay:none 과 visibilty:hidden 차이점  (0) 2024.01.08
  1. 1. abstracts
  2. 2. vendors
  3. 3. base
  4. 4. layout ( patials )
  5. 5. components ( modules )
  6. 6. pages
  7. 7. themes
  8. 8. main
'STUDY 📒/CSS & SCSS & SASS' 카테고리의 다른 글
  • [SCSS] @import 대신 @use, @forward 사용 이유, 사용 방법
  • diaplay:none 과 visibilty:hidden 차이점
South Dev
South Dev
개발이 그대를 속일지라도 Get Shit Done.
South Dev
개발이 그대를 속일지라도
South Dev
전체
오늘
어제
  • 전체보기 (38)
    • 작업 🎢 (5)
      • 웹 프로젝트 (5)
      • 영상음악 (0)
      • 100억 이상의 정보 (0)
    • STUDY 📒 (17)
      • React (3)
      • Javascript (5)
      • CSS & SCSS & SASS (3)
      • Web Design (0)
      • git & github (4)
      • 정보처리기사 (0)
      • npm (2)
    • Book (13)
      • IT 5분 잡학사전 (13)
    • MUSIC 🎶 (1)
      • Bossa nova (1)
    • 기타 🎠 (1)
      • YOUTUBE (1)

블로그 메뉴

  • ⚪깃허브
  • ✏ 글 작성
  • ⚙ 관리자 페이지
  • 서치 콘솔
  • 방명록
  • 태그

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
South Dev
[SCSS] 7-1 Architecture (7-1패턴 / 폴더 구조)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.