개인적으로 frontend에서 backend까지 풀스택으로 웹을 다루는 개발자의 입장에서 가장 좀 답답하다고 생각되는 분야가 있다면 바로 CSS이다. 물론 부족한 미적 감각으로 인해 아무리 만지작 거려도 예뻐지지 않는다는 점도 일부 작용하겠지만 CSS는 쉬운 듯하면서 어려운 것 중 하나이다. 아니 어렵다기보다는 답답하다. (어려운 측면은 종류가 많아서 원하는 걸 찾기가 어려운 면이 있다.)
CSS에는 일반적으로 프로그래밍에서 사용하는 그 흔한 변수나 함수등이 없다. 외부 CSS를 링크거는 등 모듈화 하려는 노력이 있으나 전체적으로 재사용하기가 어려우며 규모가 커질수록 유지보수성 역시 떨어지게 된다. 답답한 친구 CSS
SASS(Syntatically Awesome Style Sheet)
이런 답답한 CSS를 작성하는 문법을 깜짝 놀랄만한게 변신시켜 주는 녀석이 있으니 바로 SASS이다.
Scss 기반으로 CSS를 작성할 때는 .scss라는 파일을 작성한다. 당연히 브라우저는 모르는 녀석이다. 알다시피 브라우저는 HTML, CSS, J.S 파일만 취급한다. 따라서 scss 파일을 CSS 파일로 컴파일해서 사용해야 한다. 이를 위한 도구와 설정에 대해 살펴보자.
online sass compiler
온라인 상에서 간단히 .scss 파일을 css파일로 컴파일할 수 있는 기능을 제공해 주는 사이트들이 존재한다. 그중에서 좀 유명한 녀석이 sassMeister이다. 사용법은 간단하기 때문에 한 번씩 방문하고 클릭해 보면 끝이다.
sass는 dart sass 기반의 컴파일러이고 현재 버전은 1.53.0 임을 알 수 있다.(물론 버전은 시간에 따라 달라질 것이다.)
이제 sass 명령을 이용해서 compile 해볼 수 있는데 기본 사용법은 아래와 같다.
sass <input.scss> [output.css]
sass --watch <input.scss> [output.css] // 지속적인 감시, 컴파일
sass <input.scss>:<output.css> <input/>:<output/> <dir/> // 폴더 대상 처리 가능
이제 아래 표의 좌측에 있는 scss를 작성하고 컴파일을 진행하면 우측의 css가 생성된다.
이때 생성된 결과물을 보면 hello.css와 함께 hello.css.map 파일이 생성된 것을 확인할 수 있는데 이 파일은 scss와 css 파일을 매핑하는 역할을 수행하며 css 디버깅에 사용된다.
만약 이 map 파일이 없을 경우에는 디버거를 통해서 사용된 css를 점검해 보면. css로 연결되는 것을 확인할 수 있다.
그런데 우리는 css를 작성 중인 것이 아니라 scss 파일을 작성하고 있기 때문에 hello.css의 1번 라인보다는 scss 파일에서의 위치가 더 중요하다. 이때 map 파일이 있다면 아래와 같이 scss 파일에서의 위치를 보여준다.
vscode extension 활용
매번 콘솔을 통해서 컴파일하는 것이 귀찮다면 사용하는 개발 툴에 확장을 설치하는 것도 하나의 방법이다. 만약 vscode를 사용 중이라면 Live Sass Compiler의 사용을 추천한다.
이 플러그인을 설치하면 vscode 하단에 실시간 컴파일 및 모니터링을 위한 버튼이 생성되는데 Watch Saas와 Watching... 이 토글 된다. 실시간으로 컴파일을 처리하고 싶다면 Watching... 상태로 두면 되고 나중에 보고 싶은 경우는 Watch Saas 상태로 두면 된다.
주석문 작성
단일행 주석문 추가
sass에서는 주로 3가지 형태의 주석문이 사용된다.
// : 단일행 주석으로 컴파일 과정에서 사라져 css로 전달되지는 않는다.
/* comment */ : 다중행 주석으로 컴파일 후 css에도 그대로 전달된다. 하지만 compress mode에서는 제거된다.
/*! comment*/ : 역시 다중행 주석인데 compress mode에서도 유지된다. 참고로 compress mode를 사용하기 위해서는 컴파일 시 --style compressed를 추가하면 된다.
// 단일행 주석은 컴파일 과정에서 사라져 css로 전달되지 않음
/* 이 주석은 css로 전달되지만
compress mode에서는 제거됨 */
/*! 이 주석문은 compress mode에서도 유지됨
sass hello.scss --style compressed*/
p/* 다중행 주석은 어디든 사용 가능 */.sans {
font: Helvetica,
sans-serif;
}
이상으로 Scss를 사용하기 위한 기본 설정들을 마쳤다. 다음 포스트에서는 본격적으로 문법에 대해서 살펴보자.