API 参考

createBem、BemBlock 方法与校验规则。

createBem(options?)

创建 BEM 工厂,返回冻结的 BemFactory

选项类型默认说明
namespacestring''类名前缀;可为空,不可含空白
elementSeparatorstring'__'element 连接符;非空,不可含空白
modifierSeparatorstring'--'modifier 连接符;非空,不可含空白
const bem = createBem({ namespace: "acme-" });
const button = bem.block("button");

bem.block(name)

为指定 block 创建生成器(BemBlock)。name 须为非空、无空白的字符串。

BemBlock 方法

方法返回
block()namespace + block
element(name)block 类 + element 连接符 + name
modifier(name)block 类 + modifier 连接符 + name
elementModifier(element, modifier)element 类 + modifier 连接符 + modifier
elements(names)多个 element,空格连接
modifiers(names)多个 modifier,空格连接
elementModifiers(element, modifiers)同一 element 的多个 modifier
classes(input)按条件混合输出

批量方法对名称稳定去重。

classes(input)

interface ClassInput {
  block?: unknown;
  elements?: Record<string, unknown>;
  modifiers?: Record<string, unknown>;
  elementModifiers?: Record<string, Record<string, unknown>>;
}
  • truthy 输出,falsy 忽略
  • 不隐式补充父类
  • elements / modifiers / elementModifiers 须为非 null、非数组对象

校验规则

  • block、element、modifier:非空,无空白
  • namespace:可为 '',不可含空白
  • 连接符:非空,无空白
  • 结构错误抛出 TypeError

库按原样拼接,不解析结果;名称中可以包含连接符字符。

导出类型

BemOptions · BemFactory · BemBlock · ClassInput · Conditions