记一次 bem 命名规范使用优化方案
背景
在公司项目中,我们一直class名称遵循bem规范,但是在使用中,也发现了一些不方便的地方
class名称比较长,写起来比较麻烦,一个dialog文字位置的样式需要写成
ns-dialog__title--center
在使用多个class时候需要拼字符串,特别是如果存在条件判断的样式,还需要进行if判断 下图是蚂蚁金服 ant design 框架的一段样式处理,虽然进行了包装处理,但是还是稍显麻烦
解决方案
为了简化bem规范的使用复杂度,我借鉴了几个框架的方法,打造了一款比较简单易用的插件库css-bem
(https://github.com/snowzijun/css-bem)。
在这个插件库中,为了更符合常用的组件库样式的命名,在bem规范基础上,我又新增了一个命名空间(namespace)概念,变成了nbem,如京东taro-ui框架输入框的样式at-input__overlay--hidden
,at
为namespace
,input
为block
,overlay
为element
,hidden
为modifier
安装
基本用法(以react开发Button组件为例)
api说明
React 高阶组件
Vue mixins
其他说明
版权声明: 本文为 InfoQ 作者【前端有的玩】的原创文章。
原文链接:【http://xie.infoq.cn/article/d3a667ff29dcfe47287997ca8】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论