Serverless 中防止重复代码的技巧

面试官:小伙子,你的数组去重方式惊艳到我了

Serverless 是一种云计算模式,它将应用程序中的基础设施部分托管给云服务提供商,使开发人员能够专注于业务逻辑而不必担心服务器运维。在 Serverless 中,函数是应用程序的基本单位。每个函数都是一段独立的代码,都可以独立部署和运行。但是在实际开发中,我们经常会遇到许多函数具有相似的逻辑,这就会导致重复的代码。

如何防止 Serverless 中的重复代码呢?在本文中,我们将介绍一些技巧来解决这个问题。

抽象公共逻辑

第一种方法是抽象公共逻辑。在 Serverless 中,我们可以将相似的逻辑抽象出来成为一个通用的函数。这个函数可以被多个函数引用,而不用在每个函数中都写一遍相似的逻辑。快递轨迹查询可以看作是一个很好的例子。

假设我们有两个函数,分别是查快递轨迹和查快递运费,它们都需要访问快递数据 API,而该 API 需要身份验证。我们可以将身份验证和数据 API 访问封装在一起,并将其作为一个单独的函数。

以 Node.js 为例,示例代码如下:

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

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

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

如上述代码所示,我们把公共逻辑封装在了 getExpressInfo() 中,然后在 getExpressFee() 中调用 getExpressInfo(),以获取身份验证和访问快递数据 API 的逻辑。

这样,我们就能在多个函数中共享代码,并且可以大大减少冗余。

封装通用库

第二种方法是封装通用库。在 Serverless 中,使用通用库是一种很好的方式来避免重复代码。通用库通常由一个或多个函数使用,它是一组可重用的代码。通用库通常是由第三方或内部开发人员维护,提供商自己也可以为 Serverless 代码提供一些封装好的库。

以 JavaScript 为例,我们可以使用 NPM 包来引入通用库。这些库是应用最广泛和最经典的 HTTP 提供器之一,提供了大量的功能和便利。我们可以在函数代码中使用它们,而不必担心代码的重复。

例如,Express 是一个轻量级的 Web 框架,它可以帮助我们进行路由、模板和中间件等方面的处理。我们可以在每个函数中单独部署 Express 库,但是这样会导致我们在多个函数中编写相同的代码。

因此,我们可以将 Express 库封装成一个通用库,然后在函数中使用该库。以下是示例代码:

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

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

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

如上述代码所示,我们只需要在服务器上部署了一个函数,就可以访问路由 /hello,而路由 /hello 的处理函数是在框架中定义的。

模板化

第三种方法是使用模板来创建和管理函数。在 Serverless 中,函数代码很可能是相似的,只是输入和输出有所不同。例如,我们可能需要访问多个数据源,然后返回一个组合结果。这个组合的代码可能在几个函数中都需要用到。用一个通用函数处理它们是浪费时间的,因为这个通用函数有很多不同的输入和输出,需要定制化。

一个有效的解决方法是使用模板。我们可以使用模板来生成每个函数的代码,这样就可以避免重复的代码。模板通常包括通用逻辑、数据对象和响应对象。因此,我们可以使用模板来生成通用代码,然后将模板应用于不同的函数中。

以下是使用模板生成 Express.js 路由的示例代码:

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

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

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

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

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

如上述代码所示,我们使用 createRouteHandler() 函数生成路由处理程序。createRouteHandler() 函数将 commonLogic() 函数和特定的输入参数组合在一起。

这样,我们就能将路由处理程序封装成一个通用模板,以解决代码重复的问题。

结论

在 Serverless 中,防止代码重复是非常重要的。通过抽象公共逻辑、封装通用库和模板化,我们可以避免重复的代码,提高代码质量和可维护性。

这些技巧可以与多种编程语言和 Serverless 系统一起使用。无论是在 AWS Lambda 还是 Google Cloud Functions,我们都可以使用这些方法来减少重复代码的出现。

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


猜你喜欢

  • 5 个有用的 CSS Grid 效果,提高网站视觉体验

    在现代网站设计中,CSS Grid 布局已经成为前端工程师不可或缺的一种技术。CSS Grid 是一种强大的布局系统,可以帮助我们更轻松地创建复杂的布局效果,而且具有很好的可扩展性和可重用性。

    14 天前
  • 制作 Material Design 响应式表格的技巧

    Material Design 是一种现代化的设计风格,越来越多的网站和应用程序开始采用它。而表格作为前端开发的重要组件,在 Material Design 中也有特定的设计规范。

    14 天前
  • 使用 Go 语言编写的 Kubernetes 客户端库详解

    Kubernetes 是一个高度可扩展的分布式容器编排系统,可用于自动扩展、管理容器化应用程序。使用 Kubernetes,可以轻松管理容器、集群和部署。 在 Kubernetes 中,有许多客户端库...

    14 天前
  • Enzyme 中如何进行 React 组件的异常测试

    Enzyme 中如何进行 React 组件的异常测试 React 组件的开发是前端开发中重要的部分,通过组件化的方式可以方便的管理业务逻辑,并且组件的复用性也有很大提升。

    14 天前
  • 优化 CSSReset 提升页面加载速度的技巧

    随着Web应用程序的日益复杂,前端性能变得越来越重要。在提高响应速度方面,优化CSSReset是一个重要的话题。 在本文中,我们将讨论如何优化CSSReset以加速页面加载速度。

    14 天前
  • 解决 PM2 遇到的 Node.js 应用内存泄漏问题

    在 Node.js 应用中,内存泄漏是常见的问题之一。当内存泄漏发生时,应用程序将会使用越来越多的系统内存,直到最终崩溃或超过系统可用内存。这对于生产环境中的应用来说是非常危险的。

    14 天前
  • PWA 中如何优化表单输入体验

    PWA(Progressive Web App)是一种新兴的 Web 应用程序开发技术,它借鉴了原生应用程序的功能和体验,同时又具备了 Web 应用程序的优势。尤其是在移动设备上,PWA 可以提供类似...

    14 天前
  • 一文详解 ES11(ECMAScript 2020)新特性

    ECMAScript 2020(简称 ES11)是 JavaScript 的最新版本。这个版本的主要目标是改进开发者的编码效率和增加可读性。本文将详细介绍 ES11 中的新特性,包括深度解析和示例代码...

    14 天前
  • Web Components 如何降低组件浪费情况?

    Web Components 是一种新型的前端技术,可以让开发者轻松创建自定义的 HTML 标签,并将其封装成一个可重用的组件。这种技术的核心是使用了 Shadow DOM、Custom Elemen...

    14 天前
  • 构建可复用的 Web 组件:Custom Elements 和 Shadow DOM

    前言 在现代前端开发中,组件是不可或缺的一部分。在大型应用中,组件能够将代码分离成小而独立的部分,使得代码更加易于维护和扩展。然而,如何构建可复用的组件仍然是一个有挑战的问题。

    14 天前
  • 构建 Restful APIs:使用 Fastify 和 Joi

    如今,大多数 Web 应用程序都依赖于 REST API。它是一种使应用程序组件之间相互通信的通用方法。REST API 已成为现代应用程序中的核心技术,并始终被广泛使用。

    14 天前
  • MongoDB 操作符实用指南

    简介 MongoDB 是一种流行的 NoSQL 数据库,它的灵活性和可扩展性使其成为今天最受欢迎的数据库之一。MongoDB 不仅支持许多标准查询操作,还提供了一些特殊功能,以支持更复杂的数据操作。

    14 天前
  • React.js SPA 应用如何实现页面元素高度自适应的方法

    在开发 React.js 单页应用(SPA)时,需要让页面元素实现高度自适应,以应对各种屏幕大小和设备类型。本文将介绍如何实现页面元素高度自适应的方法,并提供详细的示例代码和指导意义。

    14 天前
  • 使用 Node.js 和 Mock.js 实现前端数据模拟的方法

    随着前端开发的不断发展,前端开发者们的工作越来越复杂和多样化,其中一个重要的工作就是模拟数据。模拟数据的目的是为了在开发和测试阶段使用假数据来替代真数据,从而提高开发效率和测试质量。

    14 天前
  • 使用 Chai 进行前端测试

    Chai 是一个 JavaScript 测试库,它提供了多种接口灵活的断言风格,允许您构建易于阅读和易于调试的测试。在前端开发中,使用 Chai 进行测试是一种常见的做法。

    14 天前
  • 为何需要无障碍性?

    随着互联网技术的快速发展,网站越来越多地融入了我们的生活当中。然而,我们经常往往忽略了一个很重要的问题——无障碍性。什么是无障碍性呢?它是指网站能够被残障人士以及老年人使用,对于这些用户来说,我们必须...

    14 天前
  • Material Design 中的表格规范详解

    Material Design 是由 Google 推出的一套 UI 设计语言,旨在为设计师和开发者提供一套全面的视觉和交互设计准则。在 Material Design 中,表格是一种主要的信息呈现方...

    14 天前
  • 如何使用 Headless CMS 技术来开发安全的商业网站应用程序

    Headless CMS 技术是一种新兴的内容管理解决方案,它将内容管理系统 (CMS) 的后端和前端完全分离。这种方式可以让开发者更加灵活地组织内容、掌控数据流,同时增加了安全性。

    14 天前
  • 如何在 Django 中使用 TailwindCSS

    TailwindCSS 是一种非常流行的 CSS 框架,它能够快速地帮助您构建美观、移动优先的用户界面。在这篇文章中,我们将探讨如何在 Django 中使用 TailwindCSS,以及如何集成 Ta...

    14 天前
  • CSS Flexbox 实现带背景色的文本溢出省略号

    在 Web 开发中,文本溢出省略号是一种非常常见的效果。通常情况下,这种效果可以使用 CSS 的 text-overflow 属性来实现。但是如果要将文本溢出省略号和背景色应用在一起,就需要使用 CS...

    14 天前

相关推荐

    暂无文章