两个都是Sass中常用的导入方式
| 特性 | @import(已弃用) | @use(推荐使用) |
|---|---|---|
| 变量/函数/混入 | 自动全局引入 | 默认是私有的,需通过命名空间访问 |
| 多次引入 | 同一个文件会被引入多次 | 同一个文件只会被引入一次 |
| 命名冲突 | 容易出现命名冲突 | 避免冲突,使用命名空间隔离 |
| 编译行为 | 编译时会把多个文件合并为一个文件 | 模块化,不自动合并 |
| 是否被弃用 | ✅ 是,官方不推荐使用 | ✅ 否,是推荐使用方式 |
@import可以直接用
// _variables.scss
$main-color: blue;
// main.scss
@import 'variables';
body {
color: $main-color; // 可以直接使用
}
- 如果另一个文件也定义了
$main-color,会冲突。 - 多次
@import 'variables',它会被编译多次。
@Use需要通过命名空间访问
// _variables.scss
$main-color: blue !default;
// main.scss
@use 'variables';
body {
color: variables.$main-color; // 通过命名空间访问
}
-
变量不会进入全局作用域,默认是私有的。
-
必须用命名空间访问(除非用
@use 'file' as *;)。 -
更适合模块化开发。
命名空间控制
@use 'variables' as v;
body {
color: v.$main-color;
}
如果你真的想像 @import 一样让所有东西变成全局(不推荐):
@use 'variables' as *; // 小心命名冲突