You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BEM命名规范中service block(服务块)的含义是什么?

BEM命名规范中的服务块(Service Block)详解

先明确BEM的核心约束:BEM不允许创建「元素的元素」,但当你需要把一个元素拆分成更小的功能单元来简化开发时,服务块就是解决这个矛盾的方案。

服务块的核心含义

服务块是一种独立、通用的功能块,它不依附于特定的父块,专门用来嵌入到其他块或元素中,替代违规的「元素嵌套元素」写法,同时保持代码的模块化和可复用性。

服务块的作用与特点

  • 规避BEM层级禁忌:解决了“不能给元素再定义子元素”的问题,让复杂UI结构可以合理拆分
  • 通用可复用:服务块的功能偏向通用化,比如文本组、布局容器、图标包装器这类模块,能在多个不同的块中重复使用
  • 保持结构清晰:它和宿主块/元素是嵌入关系,而非从属关系,不会让命名链条变得冗长混乱

实际示例

比如你有一个card块,其内部的card__content元素需要包含标题+文本的结构:

<!-- 错误:违反BEM规则,创建了元素的元素 -->
<div class="card">
  <div class="card__content">
    <div class="card__content__title">卡片标题</div>
    <div class="card__content__text">卡片文本内容</div>
  </div>
</div>

<!-- 正确:使用服务块替代嵌套元素 -->
<div class="card">
  <div class="card__content">
    <div class="text-group">
      <div class="text-group__title">卡片标题</div>
      <div class="text-group__text">卡片文本内容</div>
    </div>
  </div>
</div>

这里的text-group就是服务块,它不仅能在card块里用,还能放到article、modal等其他块中,完全独立于宿主存在,同时严格遵循了BEM的命名规则。

内容的提问来源于stack exchange,提问作者coding journey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:46:02