Mengapa dalam lembaran gaya Sass, kita harus menggunakan @use untuk mengimport kod dan bukannya menggunakan @import secara langsung?
P粉493534105
P粉493534105 2023-09-15 21:45:03
0
1
703

Saya sedang melaksanakan projek dan daripada apa yang saya faham, @use只会将代码导入到我们使用@use berada dalam lembaran gaya, bukan mana-mana lembaran gaya lain.

dokumentasi sass:

@gunakan ahli yang dimuatkan (pembolehubah, fungsi dan campuran) hanya boleh dilihat dalam lembaran gaya yang memuatkannya. Jika lembaran gaya lain ingin mengaksesnya, mereka perlu menulis peraturan @use mereka sendiri.

Jadi saya mempunyai sesuatu yang dipanggil _b.scss的文件,它是我编译为css的sass的主文件,然后我有一个名为a.scss的文件,我在其中通过@use导入了_b.scss,然后,我有一个名为project.scss的文件,在其中我导入了a.scss,所以根据这个层次结构,_b.scss不应该在project.scss中可访问,但是当我将project.scss编译为css时,在我的css文件中,我编译了来自_b.scss的scss代码(然而,如果我在project.scss中写入像@debug map-get($colors."red") seperti ini dan ia menimbulkan ralat), jadi mengapa ini berlaku?

PS: Saya menggunakan gulp untuk menyusun, membersihkan dan memantau scss dan css saya.

//文件层次结构

index.html
gulpfile.js
a.scss
_b.scss
project
  project.scss
css
  project.css
//index.html

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/project.css">
<title>Document</title>
</head>

<body>
<div class="bg-red">hey</div>
<div class="bg-purple">hey</div>
</body>

</html>
//_b.scss

 $colors:(
 "red":red,
 "blue":blue,
 "green":green,
 "yellow":yellow,
 "brown":brown,
 "purple":purple
 );

 @each $key,$val in $colors{
 .bg-#{$key}{
 background: $val;
 }  
 }
//a.scss

@use "b";
//project.scss

@use "../a";
//project.css

.bg-red {
background: red;
}

.bg-purple {
background: purple;
}
//gulpfile.js

const { src, dest, watch, series } = require('gulp')
const sass = require('gulp-sass')(require('sass'))
const purgecss = require('gulp-purgecss')

function buildStyles() {
return src('project/*.scss')
    .pipe(sass({}))
    .pipe(purgecss({ content: ['*.html'] }))
    .pipe(dest('css'))
}

function watchTask() {
watch(['project/*.scss', '*.html'], buildStyles)
}

exports.default = series(buildStyles, watchTask)

P粉493534105
P粉493534105

membalas semua(1)
P粉316423089

Berdasarkan petikan anda sendiri (penekanan saya):

Sila ambil perhatian bahawa ini tidak termasuk peraturan gaya. Menurut docs, peraturan gaya masih "dimuatkan" ke dalam lembaran gaya yang dijana:

Oleh itu, @use digunakan untuk mengasingkan ahli (pembolehubah, fungsi dan campuran) yang boleh dilihat semasa mengeluarkan peraturan gaya.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!