当前位置: 首页 > 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推荐的导入方式

相关文章:

  • 硬件-电源-隔离与非隔离的区别
  • 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功能
  • 视觉周刊|走进变革中的博物馆
  • 第十一届世界雷达展开幕,尖端装备、“大国重器”集中亮相
  • 著名心血管病学专家李国庆教授逝世,享年63岁
  • 习近平就乌拉圭前总统穆希卡逝世向乌拉圭总统奥尔西致唁电
  • 小雨伞保险经纪母公司手回集团通过港交所聆讯
  • 中国物流集团等10家央企11名领导人员职务任免