npm 包 adonis-bem-xjst-provider 使用教程

简介

adonis-bem-xjst-provider 是一款适用于 Node.js 的 npm 包,它提供了一种便捷的方式来渲染复杂的 HTML 结构,并使用 BEM(块、元素、修饰符)命名约定。

通过 adonis-bem-xjst-provider,可以使用 XJST 模板语言来定义 BEM 的结构和样式,并借助 AdonisJS 服务端框架来实例化和管理这些组件。

本文将介绍如何在 AdonisJS 项目中使用 adonis-bem-xjst-provider,并提供一些示例代码和最佳实践。

安装

可以使用 npm 在项目中安装 adonis-bem-xjst-provider。

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

配置

在 AdonisJS 项目中,我们需要在 start/app.js 文件中注册 adonis-bem-xjst-provider 提供的服务。

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

然后,我们需要在 .env 文件中配置 adonis-bem-xjst-provider 的选项。

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

其中:

  • BEM_APP_NAMESPACE:应用的根命名空间,将用于生成组件的唯一 ID。
  • BEM_XJST_USE_CACHE:是否启用缓存来优化模板解析性能。
  • BEM_XJST_CACHE_TTL:缓存的 TTL(过期时间),单位毫秒。默认为 300000(5 分钟)。

使用

定义样式

在 adonis-bem-xjst-provider 中,样式采用 postcss-bem 插件来生成 CSS。

首先,我们需要在 start/app.js 文件中配置 postcss-bem 插件。

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

-- ---

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

  -- ---
--

-- ---

start/app.js 文件中,我们可以定义 BEM 的结构和样式。

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

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

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

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

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

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

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

以上代码定义了一个名为 button 的组件,它具有 sizecolor 两个属性,以及一个 disabled 状态。它还定义了一个名为 text 的子元素。

渲染组件

在渲染组件之前,我们需要确保 adonis-bem-xjst-provider 的服务已经被实例化。

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

-- ---

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

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

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

以上代码将在 MyController 中使用 BEM.render() 方法渲染 button 组件,方法的第一个参数为组件名称,第二个参数为数据对象。

渲染完成后,我们将 HTML 字符串传递到视图模板中,让模板引擎负责渲染最终的 HTML 内容。

示例代码

以下是一个完整的示例代码,它演示了如何在 AdonisJS 项目中使用 adonis-bem-xjst-provider 渲染 BEM 组件。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

结论

adonis-bem-xjst-provider 是一款非常实用的 npm 包,它可以帮助我们快速、高效地创建和管理复杂的 HTML 页面和组件。通过这篇文章,你学会了如何在 AdonisJS 项目中使用 adonis-bem-xjst-provider,以及一些最佳实践和使用技巧。希望能够对你的前端开发工作有所帮助!

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


猜你喜欢

  • npm 包 nativescript-yolo 使用教程

    简介 nativescript-yolo 是一个基于 NativeScript 构建的开源框架,通过它可以快速创建一个最小化的 NativeScript 移动应用程序。

    4 年前
  • npm 包 @mstrlaw/noodle 使用教程

    简介 @mstrlaw/noodle 是一个基于 React 的 UI 组件库,它包括诸如表单、按钮、图标、弹窗等各种常见的 UI 组件。通过使用该组件库,可以快速构建出现代化的 web 应用。

    4 年前
  • npm 包 @enginite/libstarter 使用教程

    在前端开发中,我们常常需要使用一些工具或框架。npm 是一个广泛使用的包管理器,提供许多高质量的依赖项。其中一个非常有用的 npm 包是 @enginite/libstarter,它提供了一种快速创建...

    4 年前
  • npm 包 os-dependent-path-delimiter 使用教程

    什么是 os-dependent-path-delimiter? os-dependent-path-delimiter 是一个 node.js 的 npm 包,用于在不同操作系统的路径分隔符(OS-...

    4 年前
  • npm包@adonisjs/cookie使用教程

    简介 @adonisjs/cookie 是一个基于 Node.js 的轻量级 Cookie 管理器,在 AdonisJs 框架中广泛使用。它使用简单,并且能够轻松地进行 Cookie 的创建、读取、更...

    4 年前
  • npm包budavolgyi-balint-cv使用教程

    前言 budavolgyi-balint-cv是一款基于React的简历生成组件,可以帮助前端开发人员更轻松地制作个人简历并展示自己的技能和经历。本篇文章将详细介绍如何使用该npm包,并附上示例代码,...

    4 年前
  • npm 包 batch-pagespeed-benchmark 使用教程

    前言 随着互联网技术的高速发展,人们越来越依赖网页来获取信息以及进行各类操作。而快速响应是衡量网页质量的重要标准之一。因此,网页性能优化已经成为了每一个前端工程师必须具备的技能之一。

    4 年前
  • npm 包 vue-pose 使用教程

    介绍 vue-pose 是一个基于 React Pose 库的 Vue 实现。通过使用 vue-pose,你可以很方便地在 Vue 应用中实现动画效果。 vue-pose 支持非常灵活的动画定义,可以...

    4 年前
  • npm 包 vuex-loadings 使用教程

    本文将介绍一款前端类的 npm 包 vuex-loadings 的使用方法。通过这个工具,你可以更加便捷的控制异步请求的 loading 状态,提高开发效率。 vuex-loadings 简介 vue...

    4 年前
  • npm 包 static-pages-bundler 使用教程

    前言 在 Web 开发过程中,静态页面是不可避免的一部分。在开发阶段,我们通常需要将静态页面进行打包和压缩,以提高性能和加快页面的加载速度。而这个过程通常需要依赖于工具链或打包工具,而我们今天要介绍的...

    4 年前
  • npm 包 egg-direct 使用教程

    在前端开发中,很多项目都会涉及到后端的搭建和接口的调用。而 Egg.js 是一个基于 Node.js 和 Koa.js 的企业级框架,可以帮助我们快速构建稳定可靠的后端服务。

    4 年前
  • npm包Gatsby-plugin-trustpilot使用教程

    什么是 Gatsby-plugin-trustpilot? Gatsby-plugin-trustpilot是一个NPM包,它允许开发人员轻松地将Trustpilot评分集成到他们的网站中。

    4 年前
  • npm 包 @indlekofer/object_set 使用教程

    介绍 @indlekofer/object_set 是一款用于 JavaScript 对象深层嵌套属性赋值的 npm 包。它能够帮助开发者轻松地在对象中设置值,无需手动逐层遍历对象。

    4 年前
  • npm 包 incentro-adf-msoffice-module 使用教程

    1. 前言 incentro-adf-msoffice-module 是一个基于 Node.js 的 npm 包,用于在 Alfresco Content Services 中集成 Microsoft...

    4 年前
  • npm 包 discord-bans 使用教程

    简介 discord-bans 是一个基于 Discord API 的 npm 包,用于管理和查询已经被禁止进入 discord 服务器的用户。它可以获取所有已经被删除的用户,查看所有用户的禁言状态,...

    4 年前
  • npm 包 ucarui-theme-chalk 使用教程

    前言 在开发 Web 前端界面时,样式是一个十分重要且需要面对的问题。为了方便统一样式风格,并实现一定的定制化,许多 UI 框架都会提供自定义主题的功能。 在此基础上,我们介绍一种基于 Vue.js ...

    4 年前
  • npm 包 ace-scripts 使用教程

    前言 近年来,随着前端技术的迅猛发展,前端项目的工程化、自动化已经成为了一种必需品。而 npm 包作为前端项目的重要组成部分,无论是开源库还是开发工具,都在不断涌现。

    4 年前
  • npm 包 @gothbarbie/data-type-tool-belt 使用教程

    简介 @gothbarbie/data-type-tool-belt 是一个针对 JavaScript 数据类型的工具包,提供了丰富的方法和函数,可以大大方便前端工程师处理数据类型相关问题。

    4 年前
  • npm 包 ucarui 使用教程

    前言 在前端开发中,我们常常需要使用各种 UI 组件,以提高开发效率并提供良好的用户体验。而 ucarui 是一个优秀的 UI 组件库,提供了丰富的组件及组件样式库,适用于各种 Web 应用的开发。

    4 年前
  • npm 包 package-json-sorter 使用教程

    简介 在前端项目中,使用 npm 包管理器进行依赖包的安装是非常常见的操作。而对于那些使用大量依赖包的项目来说,可能会遇到一个问题:依赖包在 package.json 文件中的顺序混乱,这会导致阅读和...

    4 年前

相关推荐

    暂无文章