当前位置:首页 > AI技术 > 正文内容

如何确保多人协作时类名不重复 通过BEM规范约束命名空间最佳实践|Duuu笔记

admin2周前 (03-31)AI技术18

BEM通过块名+元素名+修饰符的三段式命名和对应文件结构强制约束类名,避免全局样式冲突;它不自动隔离但可读可控,需配合代码审查落地。

为什么直接用

.button

会冲突

多人协作时,

.button

这种泛化类名大概率被不同模块重复定义——A组写了

.button { color: red; }

,B组后来加了个

.button { padding: 8px; }

,结果样式互相覆盖,谁的 CSS 后加载谁赢。这不是浏览器 bug,是 CSS 全局作用域的天然特性。

关键不是“能不能避免”,而是“不加约束就必然发生”。哪怕团队约定命名前缀,时间一长也会有人漏写、缩写不一致(

btn

/

ui-btn

/

commonButton

),最终退化成拼运气。

BEM 的三段式命名怎么落地到文件结构

BEM 要求类名形如

block__element--modifier

,但光改名字没用,得让文件组织方式强制对齐。比如一个搜索框组件:

search-form/

目录下放所有相关文件

CSS 文件里只出现

.search-form

.search-form__input

.search-form--compact

JS 中操作 DOM 也只认这些类名:

document.querySelector('.search-form__submit')

重点:目录名 = Block 名,所有子元素和修饰符都从这个根出发。一旦发现某处用了

.input

.btn

,就是违反约定,立刻能定位到是谁绕过了规范。

(深入)

”;

遇到嵌套组件时 BEM 容易崩在哪

常见错误是把嵌套关系硬塞进类名,比如

.header__nav__item

.card__content__title

。BEM 明确反对这种“路径式”写法——

__

只表示直属子元素,不表示 DOM 深度。

Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

正确做法是让每个 Block 自洽:

.card

内部如果有个标题,就叫

.card__title

,不管它实际在

还是

如果标题本身是个独立组件(比如带图标+文字的复合标题),那就抽成新 Block:

.title-block

,在

.card

里用

...

否则,一旦 DOM 结构微调(比如加一层 wrapper),类名就得全改,维护成本飙升。

要不要用 CSS Modules 或 scoped CSS 替代 BEM

可以,但代价是割裂。CSS Modules 生成哈希类名(

SearchForm_input__aBc12

)确实杜绝冲突,但它让开发者失去对类名的控制权——调试时看到的类名和源码对不上;第三方库或 SSR 渲染可能无法注入对应类名;想用 JS 动态切换状态(

el.classList.add('is-loading')

)还得靠

classNames

或额外映射。

BEM 是人可读、可预测、可调试的折中方案。它不解决“自动隔离”,而是用清晰规则把冲突风险压到最低。真要上 CSS-in-JS 或 scoped,建议只在新项目小范围试水,老项目改用 BEM 更平滑。

最常被忽略的一点:BEM 不是写完就算,得配合代码审查卡住

class="xxx"

里的非法字符串。没这道门禁,再好的规范三个月就形同虚设。

相关文章

【深度学习】Java DL4J 2024年度技术总结

一、Java DL4J深度学习概述 1.1 DL4J框架简介 1.2 与其他深度学习框架的比较 1.3 DL4J 的优势 1.3.1 与 Java 生态系统的无...

【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习

一、Submarine(Hadoop生态系统) (一)Submarine 介绍 (三)Submarine 属于 Hadoop 生态系统 (四)Submarine 官网版...

【DL】2023年你应该知道的 10 大深度学习算法

3. 循环神经网络 (RNN) 4. 生成对抗网络 (GAN) 5. 径向基函数网络 (RBFN) 6. 多层感知器 (MLP) 7. 自组织图 (SOM)...

神经网络中的单层神经网络

神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。人脑中的神经网络是一个非常复杂的组织。成人的大脑中估计有1000亿个神经元之多。 看一个经典的神经网络。这是一个包...

AI核心技巧:如何重置openclaw硬件设置 openclaw恢复出厂设置操作方法【操作】深度解析|Duuu笔记

重置 OpenClaw 配置有四种方法:一、交互式向导重置(openclaw onboard --reset);二、指定作用域的命令行重置(如--reset-scope config);三、手动删除~...

前端开发实战详解:骡子快跑怎么注册账号 骡子快跑账号注册流程最佳实践|Duuu笔记

骡子快跑注册仅需1分钟,但激活码需从Discord指定频道获取,输错3次将锁账户24小时;积分与注册邮箱强绑定且不可更换;部分地区即使注册成功也无法运行Agent。 ☞☞☞AI 智能聊天, 问答助手...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。