@bem/entity-name

中文文档
1.5.0发布于 2017/04/22MPL-2.0TypeScriptCommonJS近 30 天下载 2110

BEM 实体名称代表

中文使用文档
文档目录24 节
  1. 目录
  2. 安装
  3. 使用量
  4. API 密码
  5. 构造器 ({块, elem, mod })
  6. 块
  7. 精灵
  8. 模式
  9. 类型
  10. 范围
  11. 编号
  12. 已忽略
  13. 等效( 实体Name
  14. 属于( 实体Name
  15. 值( )
  16. 转到 JSON ()
  17. 转到 String ()
  18. 静态创建( 对象)
  19. 静态为 BementityName (实体Name)
  20. 序列化
  21. 类型脚本支持
  22. 可调试性
  23. 折旧
  24. 许可证

贝姆实体Name

BEM 实体 名称代表.

NPM Status Travis Status Coverage Status Dependency Status

目录

安装

$ npm install --save @bem/entity-name

使用量

const BemEntityName = require('@bem/entity-name');

const entityName = new BemEntityName({ block: 'button', elem: 'text' });

entityName.block; // button
entityName.elem;  // text
entityName.mod;   // undefined

entityName.id;   // button__elem
entityName.type; // elem

entityName.isEqual(new BemEntityName({ block: 'button' }));               // false
entityName.isEqual(new BemEntityName({ block: 'button', elem: 'text' })); // true

API 密码

构造器 ({块, elem, mod })

参数类型说明
blockstring实体的块名 .
elemstring实体的元素名称.
modstring, (中文(简体) ), object实体的修饰.

如果指定的值是 string 那样就等于 { name: string, val: true }. 可选.
mod.namestring实体的修饰名称 .
mod.valstring, (中文(简体) ), true实体的修饰值。 可选的.

在JS对象的帮助下,可以定义以下领域的BEM实体:

  • block 一个街区名。 需要此字段是因为只有一个块作为独立的 BEM 实体存在
  • elem - 一个元素名称.
  • mod - 一个修饰者.

修饰由一对字段组成 mod.name 财务报告和审定财务报表 mod.val。这意味着实地 mod.val 无 mod.name 没有任何意义.

const BemEntityName = require('@bem/entity-name');

// The modifier of block
new BemEntityName({
    block: 'button',
    mod: { name: 'view', val: 'action' }
});

// Not valid modifier
new BemEntityName({
    block: 'button',
    mod: { val: 'action' }
});
// ➜ EntityTypeError: the object `{ block: 'block', mod: { val: 'action' } }` is not valid BEM entity, the field `mod.name` is undefined

描述一个简单的修饰符 mod.val 字段必须省略.

// Simple modifier of a block
new BemEntityName({ block: 'button', mod: 'focused' });

// Is equivalent to simple modifier, if `mod.val` is `true`
new BemEntityName({
    block: 'button',
    mod: { name: 'focused', val: true }
});

块

此实体所属块的名称 .

const BemEntityName = require('@bem/entity-name');
const name = new BemEntityName({ block: 'button' });

name.block; // button

精灵

此实体的元素名称 .

如果实体不是元素或元素的修饰者,则返回空字符串.

const BemEntityName = require('@bem/entity-name');
const name = new BemEntityName({ block: 'button', elem: 'text' });

name.elem; // text

模式

此实体之修饰.

重要内容: 如果实体不是修改符,则返回 undefined。 。 。 .

const BemEntityName = require('@bem/entity-name');

const blockName = new BemEntityName({ block: 'button' });
const modName = new BemEntityName({ block: 'button', mod: 'disabled' });

modName.mod;   // { name: 'disabled', val: true }
blockName.mod; // undefined

类型

此实体的类型 .

可能的值 : block, (中文(简体) ), elem, (中文(简体) ), blockMod, (中文(简体) ), elemMod。 。 。 .

const BemEntityName = require('@bem/entity-name');

const elemName = new BemEntityName({ block: 'button', elem: 'text' });
const modName = new BemEntityName({ block: 'menu', elem: 'item', mod: 'current' });

elemName.type; // elem
modName.type;  // elemMod

范围

这一实体的范围.

重要内容: 块类型实体没有范围.

const BemEntityName = require('@bem/entity-name');

const buttonName = new BemEntityName({ block: 'button' });
const buttonTextName = new BemEntityName({ block: 'button', elem: 'text' });
const buttonTextBoldName = new BemEntityName({ block: 'button', elem: 'text', mod: 'bold' });

buttonName.scope;         // null
buttonTextName.scope;     // BemEntityName { block: 'button' }
buttonTextBoldName.scope; // BemEntityName { block: 'button', elem: 'elem' }

编号

这个实体的ID.

重要内容: 只能用来确定实体的独特性.

如果您想要根据命名公约的规定获得字符串代表, 您应该使用 @ bem/ 命名 软件包.

const BemEntityName = require('@bem/entity-name');
const name = new BemEntityName({ block: 'button', mod: 'disabled' });

name.id; // button_disabled

已忽略

确定修改是否简单.

页:1: 对于不作修改的实体 isSimpleMod() 返回时 null。 。 。 .

const BemEntityName = require('@bem/entity-name');
const modName = new BemEntityName({ block: 'button', mod: { name: 'theme' } });
const modVal = new BemEntityName({ block: 'button', mod: { name: 'theme', val: 'normal' } });
const block = new BemEntityName({ block: 'button' });

modName.isSimpleMod(); // true
modVal.isSimpleMod(); // false
block.isSimpleMod(); // null

等效( 实体Name

参数类型说明
entityNameBemEntityName比较的实体.

确定指定的实体是否为深等实体.

const BemEntityName = require('@bem/entity-name');

const inputName = new BemEntityName({ block: 'input' });
const buttonName = new BemEntityName({ block: 'button' });

inputName.isEqual(buttonName);  // false
buttonName.isEqual(buttonName); // true

属于( 实体Name

参数类型说明
entityNameBemEntityName比较的实体.

确定指定实体是否属于此类别.

const BemEntityName = require('@bem/entity-name');

const buttonName = new BemEntityName({ block: 'button' });
const buttonTextName = new BemEntityName({ block: 'button', elem: 'text' });
const buttonTextBoldName = new BemEntityName({ block: 'button', elem: 'text', mod: 'bold' });

buttonTextName.belongsTo(buttonName);         // true
buttonName.belongsTo(buttonTextName);         // false
buttonTextBoldName.belongsTo(buttonTextName); // true
buttonTextBoldName.belongsTo(buttonName);     // false

值( )

返回代表实体名称的正态对象.

const BemEntityName = require('@bem/entity-name');
const name = new BemEntityName({ block: 'button', mod: 'focused' });

name.valueOf();

// ➜ { block: 'button', mod: { name: 'focused', value: true } }

转到 JSON ()

返回原始数据 JSON.stringify() 目标.

const BemEntityName = require('@bem/entity-name');

const name = new BemEntityName({ block: 'input', mod: 'available' });

JSON.stringify(name); // {"block":"input","mod":{"name":"available","val":true}}

转到 String ()

返回代表实体名称的字符串.

重要内容: 如果您想要根据命名公约的规定获得字符串代表 您应该使用 @ bem/ 命名 软件包.

const BemEntityName = require('@bem/entity-name');
const name = new BemEntityName({ block: 'button', mod: 'focused' });

name.toString(); // button_focused

静态创建( 对象)

创建贝姆实体 以任何对象表示或字符串命名实例.

帮助无糖简洁.

参数类型说明
objectobject, (中文(简体) ), string实体名称的表示.

Passed Object 可以为实体设置共同的字段名 :

对象字段类型说明
blockstring实体的块名 .
elemstring实体的元素名称。 可选的.
modstring, (中文(简体) ), object实体的修饰.

如果指定的值是 string 那样就等于 { name: string, val: true }. 可选.
valstring实体的修饰值。 用于 mod 是一个字符串。 可选的.
mod.namestring实体的修饰名称 。 可选的.
mod.valstring, (中文(简体) ), true实体的修饰值。 可选的.
modNamestring实体的修饰名称 。 用于 mod.name 未指定。 可选的.
modValstring, (中文(简体) ), true实体的修饰值。 如果没有使用,则使用 mod.val 也没有 val 未具体说明。 可选的.
const BemEntityName = require('@bem/entity-name');

BemEntityName.create('my-button');
BemEntityName.create({ block: 'my-button' });
// ➜ BemEntityName { block: 'my-button' }

BemEntityName.create({ block: 'my-button', mod: 'theme', val: 'red' });
BemEntityName.create({ block: 'my-button', modName: 'theme', modVal: 'red' });
// ➜ BemEntityName { block: 'my-button', mod: { name: 'theme', val: 'red' } }

BemEntityName.create({ block: 'my-button', mod: 'focused' });
// ➜ BemEntityName { block: 'my-button', mod: { name: 'focused', val: true } }

静态为 BementityName (实体Name)

确定指定实体是否为 Bemnentity 实例Name.

参数类型说明
entityName*要检查的实体.
const BemEntityName = require('@bem/entity-name');

const entityName = new BemEntityName({ block: 'input' });

BemEntityName.isBemEntityName(entityName); // true
BemEntityName.isBemEntityName({ block: 'button' }); // false

序列化

这个 BemEntityName 已经 toJSON 支持的方法 JSON.stringify() 行为.

使用 JSON.stringify 序列化实例 BemEntityName。 。 。 .

const BemEntityName = require('@bem/entity-name');

const name = new BemEntityName({ block: 'input', mod: 'available' });

JSON.stringify(name); // {"block":"input","mod":{"name":"available","val":true}}

使用 JSON.parse 将 JSON 字符串去序列化并创建实例 BemEntityName。 。 。 .

const BemEntityName = require('@bem/entity-name');

const str = '{"block":"input","mod":{"name":"available","val":true}}';

new BemEntityName(JSON.parse(str)); // BemEntityName({ block: 'input', mod: 'available' });

类型脚本支持

软件包包括 输入 用于类型脚本。 须自设转相. 当你准备好 module 改为 commonjs 在你身边 tsconfig.json 文件, TypeScript 将自动找到类型定义 @bem/entity-name。 。 。 .

界面以全域命名空间提供 BEMSDK.EntityName。需要使用 JsDoc 中的接口.

可调试性

在节点J, console.log() 电话 util.inspect() 每个参数上没有格式化占位符.

BemEntityName 已经 inspect() 方法来获取对象的自定义字符串表示.

const BemEntityName = require('@bem/entity-name');

const name = new BemEntityName({ block: 'input', mod: 'available' });

console.log(name);

// ➜ BemEntityName { block: 'input', mod: { name: 'available' } }

您也可以转换 BemEntityName 对象 string。 。 。 .

const BemEntityName = require('@bem/entity-name');

const name = new BemEntityName({ block: 'input', mod: 'available' });

console.log(`name: ${name}`);

// ➜ name: input_available

折旧

折旧采用 调试。 。 。 .

要静音去除输出警告,请使用 NO_DEPRECATION 环境变量.

NO_DEPRECATION=@bem/entity-name node app.js

再来 细节 内 depd 文档

许可证

代码和文件 2016 YANDEX LLC. 代码根据 Mozilla 公共许可证2.0。 。 。 .

版本与发布记录

@bem/entity-name 共发布 9 个版本,首次发布于 2016/11/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.5.0latest2017/04/229 年前
1.4.02017/03/269 年前
1.3.22017/03/269 年前
1.3.12017/02/179 年前
1.3.02017/02/159 年前
1.2.02017/02/019 年前

其他发布通道:beta → 2.0.0-0。

关于 @bem/entity-name 的常见问题

@bem/entity-name 是什么?

BEM 实体名称代表

如何安装 @bem/entity-name?

在项目目录运行 npm install @bem/entity-name,或使用 pnpm add / yarn add / bun add。

@bem/entity-name 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bem/entity-name 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bem/entity-name 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 4.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bem/entity-name 可以商用吗?

@bem/entity-name 使用 MPL-2.0 许可。弱 Copyleft:可以商用,也可以和闭源代码一起使用;但如果分发时修改了 MPL 授权的文件,这些文件的修改需以 MPL 开源。以上为概括,不构成法律意见,请以许可原文为准。

@bem/entity-name 的下载量有多少?

根据 npm 官方下载统计,@bem/entity-name 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,110 次,日均约 70 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bem/entity-name 还在维护吗?

最新版本 1.5.0 发布于 2017/04/22(9 年前);至今共发布 9 个版本,其中过去 12 个月发布了 0 个;首次发布于 2016/11/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。