npm 包 @bem/fs-scheme 使用教程

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

在前端工作中,使用 BEM(块、元素、修饰符)命名约定已经成为一种最佳实践。使用 BEM 可以帮助我们在设计和构建组件时更好地管理代码。

为此,@bem/fs-scheme 作为一款 NPM 包,提供了一些非常有用的方法,可以帮助我们更好地使用 BEM。在本文中,我们将介绍如何使用 @bem/fs-scheme 包及其一些有用的功能。

安装 @bem/fs-scheme

首先,你需要安装 Node.js,以便在其上运行 npm 包。

接下来,在项目中执行以下命令安装 @bem/fs-scheme 包:

--- ------- -------------- ----------

创建 BEM 结构

  1. 首先,在项目根目录下创建一个名为 .bem/entity.package 的文件。此文件包含你的所有 BEM 实体名。
- ------------------------------

-------------------
---------------------
----------------------
  1. .bem/entity.package 文件中创建你的实体:
- ------------------------------------------------------------------

-------------- - -
  - ----- ---------------------- ----- - --------------- ---- - -
--
  1. 使用命令行运行命令创建你的 BEM 结构:
--------------------- ------ -- -- ----- -------------------

这将在 my-project/blocks 文件夹中创建一个名为 block-of-my-project 的目录并构建可能需要的模板文件。在这里,你也可以创建其他实体,例如 element 和 modifier。

使用 @bem/fs-scheme

在你的项目中使用 @bem/fs-scheme 包时,你需要了解和使用其一些工具方法。

new Scheme()

@bem/fs-scheme 提供了一个类 Scheme ,通过它,我们可以通过实例化的方式创建一个快速访问 BEM 实体的方法。

通过以下代码创建一个新的 Scheme 实例,并检查它是否可以工作:

----- - ------ - - --------------------------

----- ------ - --- ---------
--------------
-------------------------------------------------- -- ------- --- --------- -- -------------------

withNaming()

.withNaming() 方法会接受一个用于创建实体命名约定的函数,并在使用 scheme.create() 方法时传递它。

下面是一个使用 .withNaming() 的示例:

----- - ------- ---------- - - --------------------------

----- ------ - --- --------
  ------------------------ -------- -- -
    ----- ------------ - -----------------
    ----- ---- - -----------------------------
    ------ - ---- --
  ----

--------------

----- ----- - --------------- ------- ---------------------- -------- --------- ---

在这里,我们使用了 withNaming(),如果使用 create() 创建时传递了 entityvariant,那么返回的命名约定将实际上使用了一个带有 - 连接的实体。接下来,可以通过返回的对象访问实体。

Naming()

Naming 在 scheme.withNaming 中被调用。在本例中,我们使用了带有实体名称和素材名称的简单字符串,其值可以在 $_b(_mod)?_e这样的深度嵌套中使用。

----- - ------- ------ - - --------------------------
----- ------ - --- --------
    ------------- - -- --
    ----------- --- -------- -- --------- -- ------------- --------------------- - -----
    ------------ --- -------- -- ---------
    ----------- ----- -------- -- ----------- -------- -- ---------------------
----- ------ - --- ---------------------------
----- ------- - -
    ------ --------
    ---- --------- ----------- ---------
    ----- -
        ---- --------
    --
    -------- -
        ----- -------
        ---- - ------ -------- ----- ------- ----- - ---- ------- - --
        -------- -------
    --
-
----------------------------------- --------
--
-
  ------- --------
  ----- - ---- ------- --
  ---- -
    - ------ -------- ----- ------- ----- - ---- ------- - --
    ---------------
    ------------------
    -------------
  --
  -------- -
    ------- -------
    ---- - - ------ -------- ----- ------- ----- - ---- ------- - - --
    -------- ------
  -
-
--

在本例中,我们创建了一个名为 naming 的新 Naming 实例,并在其上应用了四个规则:

  • block 访问被作为元素出现的实体名称,例如 block 或者 input。
  • mod 访问用于对实体头部的修饰符的修饰符名称和值,例如 { block: 'block', mods: {'clean': true} }。
  • elem 访问在子实体上使用的命名约定,例如 block__elem
  • mix 访问混入其他实体的数组,例如 { block: 'block', mix: { block: 'another-block' } } 等价于 { block: 'block', mix: [ { block: 'another-block' } ] }。

rebuild()

.rebuild() 方法可以接受一个对象,并且使用你指定的实体命名约定进行转换。转换后的结果是与 BEM 命名约定相兼容的 BEM 约定树。

----- ------ - --- ---------

----- ------ - --- -- --- - ------ --------

-- ------- -- ------ ---- --- --------- ------ ----------
----- ------ - ---------------- ------ -------- ----- - --------------- ---- - -- --------
-------------------- -- ------- --- ------ ---- --- --- ------ ----------

以上是一些 @bem/fs-scheme 的核心功能。使用这些功能之后,你可以更轻松地使用 BEM 实体命名规范来创建组件!

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f1fe0de403f2923b035c62b


猜你喜欢

  • npm 包 @types/jsonld 使用教程

    在前端开发中,经常需要根据某些规范生成特定格式的数据,例如在使用 JSON-LD(JavaScript Object Notation for Linked Data)时就需要编写标准的 JSON-L...

    4 年前
  • npm 包 @types/rdf-js 使用教程

    在前端开发中,我们经常会遇到需要处理 RDF 格式数据的情况。@types/rdf-js 是一款专门为 RDF-JS 格式编写的 TypeScript 声明文件库,提供了一系列的类型定义和 API,方...

    4 年前
  • npm 包 definition 使用教程

    在前端开发中,npm 包是不可或缺的一部分。npm 包为开发人员提供了可重用的代码库,为项目开发节省了时间和精力。然而,如何使用 npm 包是一个需要掌握的技能。 在本篇文章中,我们将介绍 npm 包...

    4 年前
  • npm 包 @solid/acl-check 使用教程

    在前端开发中,安全性是非常重要的一环,其中权限控制更是必不可少的一部分。而 @solid/acl-check 就是一款能够让我们更加简单地实现权限控制的 npm 包。

    4 年前
  • npm 包 @solid/oidc-rs 使用教程

    简介 @solid/oidc-rs 是一个基于 Web 逆向认证技术 OpenID Connect 的 JavaScript 库,用于实现用户登录和授权,轻松实现 Single-Sign-On (SS...

    4 年前
  • npm包 @solid/solid-multi-rp-client 使用教程

    本文介绍npm包@solid/solid-multi-rp-client的使用方法,它是一个Solid标识提供者的多个Relying Party(RP)的JavaScript客户端库。

    4 年前
  • npm 包 kvplus-files 使用教程

    简介 kvplus-files 是一个基于 Node.js 的 key-value 存储系统,可以用于在前端中存储数据和文件,同时支持热更新和版本控制。kvplus-files 的设计目标是尽可能简单...

    4 年前
  • npm 包 @solid/oidc-auth-manager 使用教程

    OAuth 2.0 是一种用于授权的流程,它使用户能够向第三方应用授权访问他们存放在其他服务提供者处的资源,而不需要将他们的用户名和密码提供给该服务提供者。OpenID Connect(OIDC)是基...

    4 年前
  • npm 包 @solid/jose 使用教程

    前言 在现代化的 Web 应用开发中,安全性是非常重要的一个方面。JWT(JSON Web Token)是一个常用的身份验证标准,它是将 JSON 数据打包并进行加密签名的一种方式,可以用在多种场合中...

    4 年前
  • npm 包 @solid/keychain 使用教程

    什么是 @solid/keychain @solid/keychain 是一个基于 Solid 项目的 npm 包,可以在前端应用中安全地存储用户的私钥和证书等信息。

    4 年前
  • npm 包 b64-lite 使用教程

    在前端开发中,处理 base64 编码是常见的需求。npm 上有很多用于处理 base64 编码的包,b64-lite 是其中一个比较小巧的 npm 包,其提供了对 base64 编码的加密和解密功能...

    4 年前
  • npm 包 b64u-lite 使用教程

    随着前端技术的不断发展,我们经常需要在浏览器中对二进制数据进行编码和解码,以便在网络上传输。Base64 是一种常见的编码方式,而 b64u-lite 是一个非常流行的 npm 包,它提供了一组简单易...

    4 年前
  • npm 包 msrcrypto 使用教程

    什么是 msrcrypto? msrcrypto 是一个 JavaScript 加密库,它允许你使用各种加密算法处理二进制数据。msrcrypto 支持的加密算法包括:AES、RSA、HMAC、SHA...

    4 年前
  • npm包str2buf使用教程

    #npm包str2buf使用教程 ##1.什么是str2buf? str2buf是一个Node.js的npm包,可以方便地将字符串转换成Buffer类型。 ##2.为什么需要str2buf? 在Nod...

    4 年前
  • npm包 webcrypto-shim 使用教程

    在现代前端开发中,安全性和隐私保护越来越受到重视。WebCrypto API为开发人员提供了许多加密和解密操作的函数,以执行各种加密算法。但是,WebCrypto API并不是所有浏览器都支持的,特别...

    4 年前
  • npm 包 karma-virtualbox-edge-launcher 使用教程

    Karma 是一个测试运行器,它可以用于在多个浏览器或平台上运行 JavaScript 单元测试。而 karma-virtualbox-edge-launcher 就是基于 VirtualBox 的...

    4 年前
  • npm 包 eslint-config-holy-grail 使用教程

    简介 eslint-config-holy-grail 是一个基于 ESLint 的配置包,主要用于前端开发中的代码规范检测。它采用了 Holy Grail 的思想,将多个著名的前端规范标准整合在一起...

    4 年前
  • npm 包 grunt-sh 使用教程

    在进行前端开发过程中,我们经常需要执行一些命令行操作,如压缩代码、打包资源、上传文件等。这时候,我们可以使用 grunt-sh 这个 npm 包,它可以让我们在 Grunt 构建过程中调用 shell...

    4 年前
  • npm 包 karma-virtualbox-ie11-launcher 使用教程

    在前端开发过程中,我们经常需要进行自动化测试,以确保代码质量和稳定性。而 karma-virtualbox-ie11-launcher 可以帮助我们在 VirtualBox 虚拟机中启动 Intern...

    4 年前
  • 前端开发中的必备工具:npm 包 @erquhart/browserify-fs 的使用教程

    在前端开发工作中,我们经常会使用到各种 npm 包,而 @erquhart/browserify-fs 是一款非常实用的 npm 包,它可以帮助我们实现浏览器端的文件系统操作,极大地方便了前端开发工作...

    4 年前

相关推荐

    暂无文章