Cờ `!global` trong SASS
Bài viết này giải thích về cờ !global trong SASS.
Chúng tôi sẽ giải thích chi tiết cơ chế, ví dụ sử dụng và những lưu ý khi dùng cờ !global.
YouTube Video
Cờ !global trong SASS
Trong SASS, cờ !global được dùng để kiểm soát phạm vi của biến. Khi hiểu đúng và dùng hợp lý cờ này, bạn có thể tránh các hành vi không mong muốn trong mã và nâng cao tính bảo trì.
Cờ !global là gì?
Thông thường, các biến trong SASS đều có phạm vi. Mặc định, biến chỉ có giá trị trong phạm vi nơi nó được khai báo. Nói cách khác, nếu một biến được khai báo trong hàm hoặc mixin, nó sẽ không thể sử dụng bên ngoài phạm vi đó.
Tuy nhiên, nếu sử dụng cờ !global, bạn có thể gán trực tiếp biến đó vào phạm vi toàn cục. Điều này cho phép biến được chia sẻ giữa các phạm vi khác nhau.
Không sử dụng cờ !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}- Trong đoạn mã này,
$colorđược khai báo ở phạm vi toàn cục, nên thuộc tínhcolorcủa.changevẫn làđỏ.
CSS xuất ra
1.change {
2 color: red;
3}Với cờ !global
Hãy thêm cờ !global vào cùng ví dụ trên.
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}- Trong trường hợp này, khi cờ
!globalđược chỉ định, giá trị của$colorsẽ được cập nhật ở phạm vi toàn cục. Kết quả là thuộc tínhcolorcủa.changesẽ trở thànhxanh da trời.
CSS xuất ra
1.change {
2 color: blue;
3}Lưu ý khi sử dụng
-
Ô nhiễm phạm vi toàn cục Việc lạm dụng cờ
!globalcó thể dẫn đến xung đột phạm vi không mong muốn và gây ô nhiễm phạm vi toàn cục. Điều này đặc biệt quan trọng trong các dự án lớn, nơi nên tránh lạm dụng cờ này. -
Ghi đè giá trị ngoài ý muốn Khi sử dụng cờ
!global, các biến cùng tên có thể bị ghi đè ngoài ý muốn ở nơi khác. Vì vậy, việc đặt tên biến nhất quán và rõ ràng là cần thiết.
Ví dụ thực tiễn
Dưới đây là ví dụ về cách sử dụng đúng cờ !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}- Trong mã này, mixin
set-themecó thể được sử dụng để chuyển đổi chủ đề một cách linh hoạt. Vì các biến toàn cục được cập nhật cho từng chủ đề, nên có thể quản lý nhiều chủ đề một cách linh hoạt.
CSS xuất ra
1body {
2 background-color: #333333;
3 color: #666666;
4}Những sai lầm phổ biến và cách khắc phục
Quên thêm cờ
Nếu bạn quên thêm !global, biến có thể không được cập nhật trong phạm vi mong muốn. Hãy chắc chắn thêm rõ ràng cờ khi cần thiết.
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}Phụ thuộc quá mức vào phạm vi toàn cục
Quá phụ thuộc vào cờ !global có thể làm phức tạp việc gỡ lỗi và bảo trì mã nguồn. Chỉ nên sử dụng ở mức tối thiểu.
Tóm tắt
Cờ !global trong SASS rất hữu ích trong một số tình huống nhất định, nhưng cần sử dụng cẩn trọng. Với việc hiểu rõ phạm vi của biến và quản lý đúng phạm vi toàn cục, bạn có thể tạo ra mã SASS dễ bảo trì.
Sau đây là những điểm chính cần ghi nhớ:.
-
Biến mặc định phụ thuộc vào phạm vi của chúng.
-
Cờ
!globalcho phép bạn cập nhật biến trong phạm vi toàn cục. -
Giữ việc sử dụng cờ ở mức tối thiểu và tránh ghi đè ngoài ý muốn bất cứ khi nào có thể.
Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.