当前位置: 首页 > news >正文

Sass更新:@import——>@use

背景:将一个公共的CSS样式文件导入到任意一个组件中进行使用

一、创建并使用CSS公共样式文件

1、在目录的assets目录下创建一个style文件夹,里面存放一个.scss文件(例:mixin.scss)

2、文件内以@mixin来设置名为flex的一组样式(在调用时需要用到这个名字)

@mixin flex {
    display:flex;
    align-items: center;
    justify-content: center;
}

3 、在组件内导入公共文件(例:mixin.scss),并使用@include 样式名来引入想要的公共文件中的样式

@include flex

二、导入公共样式文件时遇到的问题及解决方案

1、最开始:使用@import '文件路径'

@import '@/assets/styles/mixin'

div{
   @include flex;
}

2、问题:

使用@import导入文件会报警告,原因是因为 Sass 的 @import 规则已被弃用,将在 Dart Sass 3.0.0 版本中移除。即使导入的样式生效(可能是使用的Sass版本没有那么高),但也存在很大的隐患,所以这种方式不建议使用。

3、解决:使用@use来替代@import(请注意,目前只有 Dart Sass 支持 @use。其他实现的使用者必须使用 @import规则。)

具体怎么使用@use,也容易出现问题:

  (1)在使用@import的基础上直接进行更改:

一开始:@import '文件路径'
更改:@use '文件路径'

@use '@/assets/styles/mixin'

div {
  @include flex;
}

(2)出现的报错是:

 (3)原因:

在 Dart Sass 中,@use 语句用于导入其他 Sass 文件,并将其内容封装在一个命名空间中。

如果你只写 @use '@/assets/styles/mixin';,Dart Sass 会默认将文件内容封装在一个命名空间中,但这个命名空间的名称是文件路径的最后一部分。

例如,如果你的文件路径是 @/assets/styles/mixin.scss,那么默认的命名空间名称就是 mixin。

所以在使用时应该是:mixin.flex

@use '@/assets/styles/mixin'

div {
  @include mixin.flex;
}

4、@use的其他写法: 

(1)取消别名(慎用)

写法:

@use '@/assets/styles/mixin.scss' as *;

div {
  @include flex;
}

可通过@use “路径” as * 来取消命名空间,这种方式加载的模块被提升为全局模块,所以在调用时不需要用命名空间名.样式类名,直接用样式类名就可以。

(2)自定义别名

@use '@/assets/styles/mixin.scss' as 自定义名字;

div {
  @include 自定义名字.flex;
}

三、@use与@import对比

@import@use
重复加载可能导致重复加载保证每个模块只加载一次
命名空间可以自定义命名空间
作用域共享一个作用域创建命名空间,有隔离性
性能可能存在性能问题更优化性能
避免全局污染不提供隔离性提供隔离性
模块化支持较弱有更好的模块化支持
推荐版本较旧版本的导入方式新版本Sass推荐的导入方式

http://www.dtcms.com/a/16776.html

相关文章:

  • 硬件-电源-隔离与非隔离的区别
  • Mac配置Flutter开发环境
  • 腾讯云Windows系统搭建ftp服务器上传图片
  • elementUI表单校验失败自动聚焦到失败input/select等输入框
  • 嵌入式硬件篇---OpenMV的硬件流和软件流
  • Ansible 自动化 Linux 运维:解放你的双手,让运维变得简单
  • Java进阶:Dubbo
  • C语言-结构体
  • Python爬虫-猫眼电影的影院数据
  • 【后端发展路径】基础技术栈、工程能力进阶、高阶方向、职业发展路径
  • oracle 19c安装DBRU补丁时报错CheckSystemSpace的处理
  • AI在网络安全中的应用:构建智能防护体系
  • 如果网络中断,Promise.race 如何处理?
  • 48. c++线程
  • Linux-文件基本操作1
  • 空间复杂度O(m) O(n) O是什么,m是什么,n是什么
  • 使用多种机器学习算法进行鸢尾花分类
  • Deepseek本地部署和网页版本区别
  • Redis 的缓存雪崩、缓存穿透和缓存击穿详解,并提供多种解决方案
  • 据称苹果与阿里巴巴将合作为中国iPhone用户开发AI功能
  • 第一章:认识Tailwind CSS - 第一节 - Tailwind CSS 的核心理念
  • DBeaver clickhouse 时区不对 时间少了8小时
  • 【广州大学主办,发表有保障 | IEEE出版,稳定EI检索,往届见刊后快至1个月检索】第二届电气技术与自动化工程国际学术会议 (ETAE 2025)
  • 8、《5分钟构建RESTful API:Spring Boot Web开发入门》
  • 本地部署DeepSeek后的调用与删除全攻略
  • 计算机网络知识速记:TCP 与 UDP
  • 在 debian 12 上安装 mysqlclient 报错
  • Gemini Thinks Faster
  • 10 . Docker 中的 DockerFile 解析(各种指令说明)
  • 安装mysql5.7报错 mysqld.exe-系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能 会解决此问题。 确定