【发布时间】:2017-04-27 11:04:30
【问题描述】:
一段时间以来,我一直在我的项目中使用“类似 BEM”的语法。最近在重温一些CSS文章的时候看到这个:https://en.bem.info/methodology/css/#single-responsibility-principle
基本上,它不是将header__button 的所有样式都放在该类中,而是从button 类中继承样式。在这种情况下,我们不是将 header 的 element 与 button 类耦合吗?这意味着,如果将来我们要更改 button 类,我们还需要准确记住我们在哪里使用这个类。
在这个例子中可能是有意义的,因为你试图拥有相同的样式,但是布局组件呢?例如,假设我有一个 Menu 类可以垂直放置一些孩子,我有一个 Sidebar 类也会对这些孩子应用一些样式。我们像这样使用它们:
menu.css
Menu {
}
Menu__item {
}
sidebar.css
Sidebar {
}
Sidebar__item {
}
index.html
<div class="Menu Sidebar">
<div class="Menu__item Sidebar__item">
</div>
<div class="Menu__item Sidebar__item">
</div>
</div>
如果我们不将所有关于如何定位项目的代码放在Sidebar 类中,并且将来我们从Menu 更改其中的一些代码,那么Sidebar 类可能会被破坏。在另一种情况下,如果我们在 Menu 和 Sidebar 两个类中重复代码,我们就违反了在问题的乞求中讨论的 SRP(单一责任原则)。这就是最近,在我的项目中,我一直支持代码重复,所以我会将Sidebar 所需的所有代码写入Sidebar 类。
但是,这里的最佳做法是什么?
【问题讨论】:
标签: css architecture frontend bem