npm 包 bffs 使用教程

在现代 Web 应用中,随着前端架构的复杂性不断增加,后端开发和前端开发的分工也越来越明显。传统的前后端分离架构,需要前端和后端同时开发和维护,并且还需要进行跨域请求和接口封装,难度较大。

为解决这一问题,有一种新的架构方式被广泛应用,这就是「BFF (Backend For Frontend)」模式,它借鉴了微服务架构中 API Gateway 的思想,将后端接口按照前端组件的需求进行封装,提供给前端开发人员直接调用,降低前后端协作的成本,提高开发效率。

在 BFF 架构中,最核心的部分就是 BFF 层。而在 Node.js 世界里,有个 npm 包叫做 bffs,它正是为 BFF 架构而生。在本文中,我们将着重介绍 bffs 包的使用方法。

BFFs 包简介

WalmartLabs 的开发团队在应对自己的 BFF 架构的挑战时,创作了 bffs 这个库。它主要功能是在 Node.js 中快速创建基于 JSON 格式的 RESTful API,并且能够根据需要在前端和后端之间调整层次结构。

bffs 主要特点包括:

  • 支持全局插件并提供插件 API。
  • 支持 before/after Middleware。
  • 可以兼顾本地/非本地 API。
  • 可以进行递归请求。
  • 小巧高效。

如果想要详细了解 bffs 的使用方法,接下来的章节将会讲到。

BFFs 包的安装

在开始使用 bffs 的同时,你需要先安装 Node.js,并通过 npm 初始化你的项目。在终端中运行以下命令完成安装:

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

这个命令使用了 npm 进行安装,并将 bffs 加入到你的项目依赖中。

BFFs 包的使用

在你的 Node.js 项目中引入 bffs 包,并使用它提供的 API,可以快速创建 RESTful API 并将其连接到你的应用程序。

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

以上这段代码,创建了一个简单的示例,当你在浏览器中打开 http://localhost:3000/hello 时,可以看到返回的字符串 hello world。但是你应该意识到,这不是一个真正的 BFF API。接下来我们将详细介绍,如何让上述代码完成 BFF 的功能。

BFFs 包的实现

为了更好地理解 bffs 的工作原理,我们先来简单介绍下 BFF 架构本身。

BFF 是一种后端架构,它解决的是由于新的前端设置引起的原有接口无法支持的问题。具体而言,由于前端的不断迭代,可能会让已有的接口无法支持,比如一些需要调度的服务,接口形式会发生变化,如果只是通过前端调度的话,可能就需要重新编写代码。而 BFF 就是在下游服务之前建立一个业务层,专门面向前端业务进行数据调用,把接口的调用封装起来,实现弹性调度,从而避免由于接口变化带来的连锁变化调整。

BFF 的设计理念,就是要将后端接口按照前端组件的需求进行组合和封装,这样能够减少前端和后端的耦合度。可能你对这个解释有些困惑,所以我们现在来针对这个问题进行深度讲解。

BFF 的设计原则

在了解 BFF 的设计原则前,我们先明确一下需求点。

首先,我们要解决的是技术层面的问题。由于前端项目的快速发展,前端、后端的产品经理在获取业务后如果需要联系后端同学,其中需要沟通的问题可能涉及到:获取接口列表、参数说明、数据格式等等。如此复杂的拉取工作,对双方都是相当大的负担。

其次,这个问题将破坏团队的开发节奏和效率。在前端和后端团队中,需要通过跨域请求和接口封装调用外部接口服务,这会阻碍团队的合作和敏捷项目开发。

另外,前端团队还需要在接收到的数据中进行统计和过滤,以使它适合客户端的显示。

基于上述问题,我们可以得出一些 BFF 的设计原则:

  • 根据前端的需要提供简单的 API 接口,避免前端和后端耦合。
  • BFF 层应该可配置、可扩展,以满足不同项目的需求。
  • BFF 负责调用微服务,有助于解锁前端团队所擅长的技能。
  • BFF 要具备下层调用链路的灵活性,从而可以快速变化,适应需求变化。

接下来,我们将着手介绍 BFFs 包,在不同情况下如何执行 BFF 架构。

BFFs 包的使用方法

第一步:创建出一个名为 myBFF_API 的变量:

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

第二步:使用 BFFs 内置插件

在创建 API 之前,你也许还需要先配置下 BFFs 的内置插件,插件有:用于解析请求体的插件,用于确定请求类型的插件等。你需要在你的代码库中先安装这些插件:

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

之后在 BFFs 中引入他们:

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

尝试使用上述插件

第三步:创建 BFF 路由

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

将 token 返回给前端。注意,上面的代码仅表示我们只针对/login 的路径保持了一个 GET 路线。

第四步:启动 BFFs API 服务器

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

使用上面的代码,你的服务器运行在你的项目在 3000 端口上。

例子说明

这样,我们就已经建立了一个简单 BFF API。它仅仅是作为一个代理响应了一个固定的请求和返回结果。

我希望,经过这篇教程,你对 BFFs 的使用和实现有了更好的了解,在你下一个三分之二的 Web 项目中,你会尽可能地使用它!

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


猜你喜欢

  • npm 包 time-ago 使用教程

    简介 在前端开发中,常常需要将时间戳(Timestamp)转换为易读的文本,例如“一小时前”、“昨天”、“1月4日”,这个时候就需要用到 time-ago 这个 npm 包。

    5 年前
  • npm 包 wepy-cli 使用教程

    前言 wepy-cli 是一个基于小程序原生语法的开发框架,在小程序开发场景中,我们可以用 wepy-cli 来快速搭建应用,完成快速开发的需求。本篇文章将介绍 wepy-cli 的基本用法和相关注意...

    5 年前
  • npm 包 uglify-loader-temporary 使用教程

    Uglify-loader-temporary 是一个 npm 包,它能够将 JavaScript 代码进行压缩和混淆,从而减小文件体积和提高加载速度。本文将详细介绍这个 npm 包的使用方法。

    5 年前
  • npm 包 exists-case 使用教程

    exists-case 是一款能够检查文件名大小写是否正确的 npm 包。该包主要应用于前端项目中,解决 Windows 和 Mac 系统下文件名大小写不敏感的问题。

    5 年前
  • npm包kung-fig-tree-ops使用教程

    介绍 kung-fig-tree-ops是一个基于Node.js的npm包,它为前端开发者提供了一系列操作JSON树节点的API,使得JSON树结构的解析和修改变得更加的高效和方便。

    5 年前
  • npm 包 logfella-common-transport 使用教程

    在前端领域,日志记录是非常重要的一项工作。通过记录日志,我们可以更好地了解应用程序的运行状况、问题定位,甚至可以发现潜在的性能问题。logfella-common-transport 是一个基于 No...

    5 年前
  • npm 包 logfella 使用教程

    在前端开发中,日志记录是必不可少的一部分。它可以帮助我们快速地调试和解决问题,同时也可以记录应用程序的运行状态。在 JavaScript 中,我们可以使用 console 来输出日志信息,但这种方式的...

    5 年前
  • npm 包 browserdeps 使用教程

    前言 前端开发最大的麻烦之一就是浏览器兼容性问题。在不同的浏览器中,JavaScript 的行为和特性可能存在巨大的差异。通过使用 npm 包 browserdeps,我们可以更轻松地了解不同浏览器之...

    5 年前
  • npm 包 uglify-loader-2 使用教程

    随着前端技术的不断发展,我们构建前端项目的过程变得越来越复杂。JavaScript 代码压缩是其中的一个重要环节。本文将介绍使用 npm 包 uglify-loader-2 进行 JavaScript...

    5 年前
  • npm 包 imfe 使用教程

    简介 imfe 是一个用于前端开发的 npm 包,它提供了丰富实用的工具函数和组件,可以用来加快 web 应用的开发速度,同时保证代码的可读性和可维护性。 本文将详细介绍如何通过 npm 安装和使用 ...

    5 年前
  • npm 包 seekjs-cli 使用教程

    在前端开发中,依赖管理和模块化已经成为了非常重要的工作。而 npm 包的出现,则让这一切变得更加便捷和高效。seekjs-cli 是一个优秀的 npm 包,它能够帮助开发者更好地管理前端模块,提高模块...

    5 年前
  • npm包 home-assistant-js-websocket使用教程

    简介 home-assistant-js-websocket是一个npm包,提供了与Home Assistant API打通的websocket通讯功能,是开发Home Assistant Web前端...

    5 年前
  • npm 包 markdown-it-lazy-headers 使用教程

    在前端开发过程中,经常需要处理文本内容,将其转化为网页等格式。Markdown 是一种很好的文本格式,能够简化文本编辑及展示过程。而 markdown-it-lazy-headers 是一个非常实用的...

    5 年前
  • npm 包 ejs-include-regex 使用教程

    概述 在前端开发中,我们经常需要使用模板引擎来实现页面渲染,ejs 作为一款优秀的模板引擎,已经被广泛应用于前端项目中。但是,ejs 在处理模板 include 的时候受到了很多限制,比如无法实现文件...

    5 年前
  • npm 包 eslint-config-ryanzim 使用教程

    在现代前端开发中,代码规范化是非常重要的一项工作。它能让代码更加易于维护和协作,减少错误和调试时间。其中一个很好用的工具就是 ESLint,它可以帮助开发者在编写代码期间提前发现和解决潜在的问题。

    5 年前
  • npm 包 ejs-lint 使用教程

    简介 ejs-lint 是一个用于检查 ejs 文件是否符合规范的 npm 包,可以帮助我们在开发过程中避免一些常见的错误。 安装 --- ------- -------- --使用 在终端中切换到 ...

    5 年前
  • npm 包 node-sass-asset-functions 使用教程

    前言 在前端开发中,样式是我们经常要处理的一部分。而 Sass 作为一种被广泛使用的预处理器,其强大的样式处理能力得到了越来越多人的关注与使用。同时,我们也需要在样式中使用一些函数或变量等。

    5 年前
  • npm 包 shins 使用教程:让你的 API 文档变得优雅

    简介 API 文档是一个非常重要的工具,它让使用者更好的了解你的 API,并使得使用者更容易上手。 shins 是基于 Slate 的一个定制版,在 Slate 的基础上加入了许多特定于 API 文档...

    5 年前
  • npm 包 cmd-line 使用教程

    前言 在前端开发中,经常需要通过命令行运行一些脚本来完成一些操作,比如打包、测试等等。而 cmd-line 包就是一个可以让我们方便地在命令行中运行 JavaScript 脚本的 npm 包。

    5 年前
  • npm 包 mini-lr 使用教程

    前言 在前端开发中,我们经常需要实时刷新页面以快速查看效果。而 mini-lr 正是一种解决方案,它允许你在自己的开发环境中相对轻松地实现浏览器的自动刷新功能。本文将介绍 mini-lr 的使用方法,...

    5 年前

相关推荐

    暂无文章