《如何规范使用 BEM,结合 ESLint 检查 CSS 命名规范》

阅读时长 4 分钟读完

前端开发中,CSS 作为网页排版与布局的重要语言,对命名规范的要求也越来越高。为了更好的防止命名冲突、提高可读性和可维护性,BEM 命名法逐渐成为了前端开发人员的首选。下面我们将介绍如何规范使用 BEM,以及如何结合 ESLint 检查 CSS 命名规范。

什么是 BEM

BEM 即 Block(块)、Element(元素)、Modifier(修饰符)的缩写。它是一种基于组件的命名方式,通过命名规则来描述组件的结构以及组件之间的关系。BEM 的命名规则如下:

  • Block: .block-name
  • Element: .block-name__element-name
  • Modifier: .block-name--modifier-name

Block 是组件的基础部分,所有的元素都包含在其中。Element 是一个 Block 的组成部分,用双下划线(__)与 Block 连接。而 Modifier 则是用来描述一个 Block 或者 Element 的变化状态,例如尺寸、颜色、状态等,用单横杆(--)与 BlockElement 连接。BEM 的命名方式非常清晰明了,可以避免不必要的冲突,也方便其他开发人员快速了解组件的结构和状态。

以一个简单的示例来说明 BEM 的使用方法:

在这个示例中,.form 是一个 Block,它包含了两个 Element.form__input.form__buttonButton 这个 Element 还定义了两个 Modifier.form__button--submit.form__button--reset,分别表示提交和重置按钮的不同状态。

如何结合 ESLint 检查 CSS 命名规范

虽然 BEM 命名法能够规范命名,并且也适用于 JavaScript 和 HTML 中的命名,但是在 CSS 中可能还会出现一些问题。有些开发人员可能会不小心犯错,比如大小写的不一致、横线、下划线乱用等等。这些错误都有可能影响到代码的可读性和可维护性,因此我们可以使用 ESLint 来检查 CSS 命名规范。

下面是配合 eslint-plugin-css-modules 插件使用的 .eslintrc 文件配置示例:

-- -------------------- ---- -------
-
  ---------- -
    -------------
  --
  -------- -
    ------------------------------ --------
    ----------------------------- --------
    -------------------------------- -
      --------
      -
        --------- --------------------------------------
        ---------- ---- --- ---- -----------------------
      -
    -
  -
-
  • css-modules/no-unused-class: 用于检查未使用的 CSS 类名。
  • css-modules/no-undef-class: 用于检查未定义的 CSS 类名。
  • css-modules/class-name-format: 用于检查 CSS 类名格式是否符合指定的正则表达式。

例如,在上面的例子中,我们指定了正则表达式为 ^[a-z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)*$,表示 CSS 类名应该符合 BEM 的命名方式,第一个字符必须是小写字母,后面的字符可以是字母、数字、横线、下划线等。如果类名格式不符合要求,则会显示错误信息。

总结

BEM 命名法是一种基于组件的命名方式,通过规范命名可以提高代码的可读性和可维护性。而 ESLint 则可以检查 CSS 类名是否符合规范,帮助开发人员更好的规范 CSS 编码。因此,结合 ESLint 检查 CSS 命名规范是一种非常好的实践,也能够帮助开发人员大幅提高代码的质量。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651c8f3995b1f8cacd410b21

纠错
反馈