第十一节:SASS @forward的使用

SASS @forward的使用

作用

通过 @forward加载一个模块的成员,并将这些成员当作自己的成员对外暴露出去,类似于类似于 es6 的 export …,通常用于跨多个文件组织 Sass 库

转发、合并scss

转发

创建forward/_common.scss

$font-size:14px !default;
* {
    margin: 0;
    padding: 0;
    font-size: $font-size;
    color: #333;
}

@function column-width($col, $total) {
    @return percentage($col/$total);
}

@mixin bgColor($bg-color:#f2f2f2) {
    background-color: $bg-color;
}

创建启动合并bootstrap.scss

@forward 'uses/common';

使用

@use 'bootstrap';
.body {
    font-size: bootstrap.$font-size;
    width: bootstrap.column-width(3, 12);
    @include bootstrap.bgColor('#F00');
}

合并

新增一个_global.scss

$font-size:28px;
@mixin base($color:#F00) {
    color: $color;
}

.gclass {
    background-color: #F00;
}

统一转发

@forward 'uses/common';
@forward 'uses/global';

使用

@use 'bootstrap';
.body {
    font-size: bootstrap.$font-size;
    width: bootstrap.column-width(3, 12);
    @include bootstrap.bgColor('#F00');
    @include bootstrap.base('#000');
}

**问题:**当多个被转发的文件存在相同变量、函数、混入时会有问题

选择性转发

默认情况下,@forward 会将一个模块中所有成员都转发,如果只想转发某些成员,当你不想转发所有变量、函数、混入时,可使用

  • @forward "
### 解决方案 为了消除 `Sass @import` 规则废弃警告,在 Dart Sass 中推荐使用 `@use` 和 `@forward` 来代替传统的 `@import`[^1]。 #### 使用 `@use` `@use` 是一种更安全的方式引入其他文件中的变量、函数和混合宏。通过这种方式可以更好地管理模块化样式表并减少命名冲突的风险。下面是一个简单的例子来展示如何应用这一新特性: ```scss // _variables.scss 文件内容如下: $primary-color: #4CAF50; $body-font-family: 'Roboto', sans-serif; // main.scss 文件中替换旧版写法为新版写法: //@import "variables"; // 废弃语法 @use "variables"; // 推荐的新语法 ``` 当使用 `@use` 导入时,默认情况下只能访问被导入文件里的公共成员(即未加下划线开头的名字)。如果想要暴露更多内部细给外部调用者,则需要用到另一个指令——`@forward`[^2]。 #### 使用 `@forward` 对于那些希望重新导出整个库或部分功能而不改变其路径结构的情况来说,`@forward` 提供了一个很好的解决方案。它允许开发者创建一层抽象层,从而简化依赖关系的同时也保持了灵活性。 假设有一个名为 `_themes.scss` 的主题配置文件,其中包含了多个颜色定义和其他辅助工具类;现在希望通过一个新的入口点统一管理和分发这些资源,那么就可以这样做: ```scss // themes/_index.scss 内容如下所示: @forward "colors"; @forward "mixins"; // colors.scss 及 mixins.scss 各自实现具体的功能... ``` 这样做的好处在于即使将来需要调整底层实现方式也不会影响到上层使用者,只要确保接口一致即可[^3]。 #### 更新现有项目 针对已经存在的大型项目而言,一次性全部转换成新的加载机制可能会比较困难。因此建议逐步迁移:先从新增代码开始采用最新标准编写;而对于遗留下来的旧有部分,则可以在适当时候再考虑重构升级[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值