SASS의 `!global` 플래그
이 글은 SASS의 !global
플래그에 대해 설명합니다.
!global
플래그의 자세한 메커니즘, 사용 예시, 주의사항에 대해 설명하겠습니다.
YouTube Video
SASS의 !global
플래그
SASS에서 !global
플래그는 변수의 스코프를 조작할 때 사용됩니다. 이 플래그를 올바르게 이해하고 적절히 사용하면 코드의 예기치 않은 동작을 방지하고 유지보수성을 높일 수 있습니다.
!global
플래그란?
일반적으로 SASS 변수에는 스코프(범위)가 있습니다. 기본적으로 변수는 정의된 범위 내에서만 유효합니다. 즉, 변수는 함수나 믹스인 내부에서 정의된 경우 그 밖에서는 접근할 수 없습니다.
하지만 !global
플래그를 사용하면 변수를 전역 스코프에 직접 할당할 수 있습니다. 이렇게 하면 변수 값을 다양한 스코프에서 공유할 수 있습니다.
!global
플래그 없이
1$color: red; // Global Variable
2
3@mixin change-color() {
4 $color: blue; // Local variable (does not overwrite the global variable)
5}
6
7.change {
8 @include change-color();
9 color: $color; // red
10}
- 이 코드에서는
$color
가 전역 스코프에 정의되어 있기 때문에,.change
의color
속성은red
로 유지됩니다.
출력된 CSS
1.change {
2 color: red;
3}
!global
플래그 사용 시
같은 예제에 !global
플래그를 추가해봅시다.
1$color: red; // Global Variable
2
3@mixin change-color() {
4 $color: blue !global; // Overwrite the global variable
5}
6
7.change {
8 @include change-color();
9 color: $color; // blue
10}
- 이 경우,
!global
플래그가 지정되어 있어서$color
의 값이 전역 스코프에서 갱신됩니다. 결과적으로.change
의color
속성 값이blue
로 변경됩니다.
출력된 CSS
1.change {
2 color: blue;
3}
사용시 주의사항
-
전역 스코프 오염
!global
플래그의 과도한 사용은 예기치 않은 스코프 충돌이나 전역 스코프 오염을 초래할 수 있습니다. 이것은 특히 대규모 프로젝트에서 중요하며, 이 플래그의 과도한 사용은 피해야 합니다. -
의도하지 않은 값 덮어쓰기
!global
플래그를 사용할 때 같은 이름의 변수가 다른 곳에서 의도치 않게 덮어써질 수 있습니다. 따라서 변수의 이름을 일관되고 명확하게 지정하는 것이 필요합니다.
실제 예시
다음은 !global
플래그를 올바르게 사용하는 예시입니다.
1$primary-color: #3498db;
2$secondary-color: #2ecc71;
3
4@mixin set-theme($primary, $secondary) {
5 $primary-color: $primary !global;
6 $secondary-color: $secondary !global;
7}
8
9.light-theme {
10 @include set-theme(#ffffff, #dddddd);
11}
12
13.dark-theme {
14 @include set-theme(#333333, #666666);
15}
16
17body {
18 background-color: $primary-color;
19 color: $secondary-color;
20}
- 이 코드에서는
set-theme
믹스를 이용해 동적으로 테마를 전환할 수 있습니다. 글로벌 변수가 테마마다 갱신되므로 여러 개의 테마를 유연하게 관리할 수 있습니다.
출력된 CSS
1body {
2 background-color: #333333;
3 color: #666666;
4}
자주 발생하는 실수와 대책
플래그를 잊음
!global
을 추가하지 않으면 변수가 원하는 범위에서 업데이트되지 않을 수 있습니다. 필요할 때는 반드시 명시적으로 플래그를 추가하세요.
1@mixin update-color() {
2 $color: green; // Local variable (does not overwrite the global variable)
3}
4
5@mixin update-color-global() {
6 $color: green !global; // Overwrite the global variable
7}
글로벌 스코프에 대한 과도한 의존
!global
플래그에 지나치게 의존하면 코드의 디버깅과 유지보수가 어려워질 수 있습니다. 사용은 최소한으로 줄여야 합니다.
요약
SASS의 !global
플래그는 특정 상황에서 매우 유용하지만, 주의해서 사용해야 합니다. 변수의 스코프를 명확히 이해하고 글로벌 스코프를 적절히 관리하면 유지보수가 쉬운 SASS 코드를 작성할 수 있습니다.
다음은 꼭 기억해야 할 주요 포인트입니다:.
-
변수는 기본적으로 자신의 스코프에 따라 작동합니다.
-
!global
플래그를 사용하면 글로벌 스코프의 변수를 업데이트할 수 있습니다. -
플래그 사용을 최소화하고, 의도치 않은 덮어쓰기를 피하도록 하세요.
위의 기사를 보면서 Visual Studio Code를 사용해 우리 유튜브 채널에서 함께 따라할 수 있습니다. 유튜브 채널도 확인해 주세요.