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

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

admin4个月前 (03-31)AI技术76

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"

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

相关文章

【大模型应用开发

二、大模型的泛化与微调 模型的泛化能力:是指一个模型在面对新的、未见过的数据时,能够正确理解和预测这些数据的能力。在机器学习和人工智能领域,模型的泛化能力是评估模型性能的重要指标之一。...

神经网络分类总结

从网络性能角度可分为连续型与离散型网络、确定性与随机性网络。 从网络结构角度可为前向网络与反馈网络。 从学习方式角度可分为有导师学习网络和无导师学习网络。 按连续突触性...

跨平台机器学习:ML.NET架构及应用编程

平台上的一个机器学习框架,它提供了一套丰富的算法和工具,使得开发人员可以轻松地构建和部署机器学习模型。支持多种编程语言,包括等,这使得它成为跨平台机器学习的理想选择。的架构主要包括三个部分:数据读取、...

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

前端开发高级应用:MuleRun如何连接Slack通知 MuleRun消息推送集成配置步骤实战案例|Duuu笔记

若MuleRun无法向Slack推送通知,需依次配置Incoming Webhook或Bot Token、在MuleRun中设置对应通知目标参数,并通过最小化任务测试验证;常见失败原因包括凭据错误、权...

bp神经网络是什么网络,神经网络和bp神经网络

1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。 2、BP神经网络:是一种按照误差逆向传播...

发表评论

访客

看不清,换一张

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