【问题标题】:Site Modules vs. Library Modules with BEM and SMACSS使用 BEM 和 SMACSS 的站点模块与库模块
【发布时间】:2014-05-24 10:24:26
【问题描述】:

这是我在使用 BEM/SMACSS 的 CSS 架构时经常遇到的情况。我想看看其他开发者如何处理它。

您有一个跨多个站点使用的 CSS 模块库。 .btn-group.nav-tabs等模块

然后您会遇到一个以非常特定于站点的方式设置样式的模块 - 它太独特而无法使用您的库模块之一。

因此,您在 Sass/Less 文件中拥有该“站点模块”的代码,并将其与该站点的其他样式代码(例如布局样式)一起保存。它没有与您的“库模块”一起保存。

我的问题是:您是否采取任何措施来区分“站点模块”和“库模块”?

【问题讨论】:

    标签: css sass less bem smacss


    【解决方案1】:

    我通常在 CSS 中关注YAGNI principle,这有助于在这种情况下做出决策。遵循总是在你真正需要的时候实现它们,永远不要在你预见到你需要它们的时候接近一个新的模块,作为一个站点模块开始它的生命。每当我需要在多个站点中使用该模块时,我就会考虑将其转换为库模块。

    【讨论】:

    • 感谢您的回复。你觉得在它仍然是一个站点模块时区分它有用吗?例如,将其分类为 .site-module 而不是 .module 以帮助您找到源代码并避免与您的库中也名为 .module 的任何内容发生冲突?
    • 如果该站点模块与库模块一起加载,则需要命名空间以避免冲突。有一个风格指南/命名约定会很有帮助,特别是对于创建库模块,以便您可以轻松地区分它们。
    【解决方案2】:

    这个问题在定义级别的帮助下得到解决。 主要思想是您可以将块(甚至是相同块的一部分)拆分为不同的层,然后在项目中组合这些层。例如。你可以有库级别(或几个库)和一个项目级别,或者根据环境可以是不同的级别:所有平台的通用部分和桌面和平板电脑的不同部分等等。

    更多详情请见http://bem.info/method/filesystem/

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 2015-10-01
      • 2014-04-17
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2017-11-07
      相关资源
      最近更新 更多