导入基本部分 scss 时避免复制 [重复]

Posted

技术标签:

【中文标题】导入基本部分 scss 时避免复制 [重复]【英文标题】:Avoid replication when importing a base partial scss [duplicate] 【发布时间】:2013-09-11 12:14:30 【问题描述】:

我的 SCSS 文件结构如下: suppliers.scss:包括_base.scss_sortable-table.scss_product.scss _sortable-table.scss_product.scss:包括 _base.scss

_base.scss 包含许多定义布局的变量,例如调制和列间大小。此外,它还包含由其他人扩展的基本布局类。

问题是,由于部分和每个样式都需要此基础导入,因此其内容会在结果 css 文件中重复多次。这会导致 css 的开销很大。

所以问题是如何防止这种重复。有什么猜测吗?

在https://github.com/coletivoEITA/noosfero-ecosol/tree/distribution-plugin/plugins/suppliers/public/stylesheets查看实际来源

【问题讨论】:

【参考方案1】:

您应该仔细查看 import-directives、extends 和 mixins,然后重构您的代码。您可能想从“超级文件”(app.scss)开始。该文件基本上只是按照您需要的顺序导入所有创建的文件。

这可能是 app.scss 的典型内容:

@import "settings";

@import "mixins";
@import "extends";
@import "browser-reset";

@import "styles";
@import "more-styles"
@import "even-more-styles"
@import "..."
    我要做的第一件事是导入我的所有设置/变量。 之后,我将导入可能已经依赖于某些变量的 mixin。 现在我正在导入我的扩展,它现在可以使用变量和 mixins。 浏览器重置文件 我的 App-Styles 可以使用我目前所做的所有设置、mixins 和扩展。

确保除 app.scss 之外的所有其他文件都带有下划线(例如 _settings.scss),否则它们将被创建为单独的 css 文件,并且在您使用变量、mixins 或扩展时当然会抛出错误在他们里面。

如果您像这样组织您的代码并在有意义的时候开始使用 mixins 和扩展,那么您就不必再担心臃肿的代码了。

【讨论】:

要做的事情是:(1) 将变量和仅变量放在部分中,(2) 使用 mixins 而不是 @extend .class (1) 您应该尽可能使用变量,是的,并且尽可能少地使用它们。 (2) 不太对。 Mixins 总是在生成新代码。扩展正在使用当前选择器扩展已经定义的 css 类。您应该从 mixin 开始(例如 radius($radius) )。如果您注意到您一遍又一遍地使用具有相同设置的这个 mixin,请在扩展文件中定义一个类并从现在开始使用它。 关于(1):如果部分除了变量之外还定义了类,那么就会发生重复

以上是关于导入基本部分 scss 时避免复制 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

导入一个css文件? [复制]

从 DynamoDB 流复制到 Kinesis Data Streams 时如何维护顺序并避免重复记录?

如何在 Webpack 上避免重复的 sass 导入(使用 @use)

避免在复制构造函数和 operator= 中重复相同的代码

redis的主从复制

用数组深度复制一个类[重复]