แฟล็ก `!global` ใน SASS
บทความนี้อธิบายเกี่ยวกับธง !global
ใน SASS
เราจะอธิบายกลไกโดยละเอียด ตัวอย่างการใช้งาน และข้อควรระวังของธง !global
YouTube Video
แฟล็ก !global
ใน SASS
ใน SASS แฟล็ก !global
ใช้สำหรับจัดการขอบเขตของตัวแปร หากเข้าใจและใช้งานแฟล็กนี้อย่างถูกต้อง คุณจะสามารถหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิดในโค้ดและเพิ่มความง่ายต่อการดูแลรักษา
!global
คืออะไร?
โดยปกติ ตัวแปรใน SASS จะมีขอบเขตการใช้งาน โดยเริ่มต้น ตัวแปรจะใช้ได้ภายในขอบเขตที่กำหนดไว้เท่านั้น กล่าวคือ ถ้ากำหนดตัวแปรภายในฟังก์ชันหรือมิกซ์อิน จะไม่สามารถเข้าถึงตัวแปรนั้นจากข้างนอกได้
แต่หากใช้แฟล็ก !global
คุณสามารถกำหนดค่าตัวแปรไปที่ขอบเขต 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
ถูกกำหนดในขอบเขต global ดังนั้น propertycolor
ของ.change
จะยังคงเป็น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
จึงถูกอัปเดตในขอบเขต global ผลลัพธ์คือ propertycolor
ของ.change
จะเปลี่ยนเป็นblue
ผลลัพธ์ CSS
1.change {
2 color: blue;
3}
ข้อควรระวังในการใช้งาน
-
การสร้างมลพิษในขอบเขต global การใช้แฟล็ก
!global
มากเกินไปอาจทำให้เกิดความขัดแย้งในขอบเขตตัวแปรและสร้างมลพิษใน global scope ได้ สิ่งนี้สำคัญเป็นพิเศษในโครงการขนาดใหญ่ ซึ่งควรหลีกเลี่ยงการใช้แฟล็กนี้มากเกินไป -
การเขียนทับค่าที่ไม่ตั้งใจ เมื่อใช้แฟล็ก
!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}
- ในโค้ดนี้ mixin
set-theme
สามารถใช้สลับธีมได้แบบไดนามิก เนื่องจากตัวแปร global ถูกอัปเดตสำหรับแต่ละธีม ทำให้สามารถจัดการหลายธีมได้อย่างยืดหยุ่น
ผลลัพธ์ 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 มากเกินไป
การพึ่งพาแฟล็ก !global
มากเกินไปอาจทำให้การดีบักและดูแลรักษาโค้ดยากขึ้น ควรใช้ให้น้อยที่สุดเท่าที่เป็นไปได้
สรุป
แฟล็ก !global
ใน SASS มีประโยชน์มากในบางสถานการณ์ แต่ควรใช้อย่างระมัดระวัง ด้วยความเข้าใจขอบเขตของตัวแปรอย่างชัดเจนและการจัดการขอบเขต global อย่างเหมาะสม คุณจะสามารถสร้างโค้ด SASS ที่ดูแลรักษาได้ง่าย
ต่อไปนี้คือประเด็นสำคัญที่ควรคำนึงถึง:
-
ตัวแปรจะขึ้นอยู่กับขอบเขตโดยปกติ
-
แฟล็ก
!global
ช่วยให้คุณสามารถอัปเดตตัวแปรในขอบเขต global ได้ -
ใช้แฟล็กเท่าที่จำเป็นและหลีกเลี่ยงการเขียนทับโดยไม่ตั้งใจเท่าที่จะเป็นไปได้
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย