首页 >web前端 >js教程 >用Peasy-JS编写可重复使用的JavaScript业务逻辑

用Peasy-JS编写可重复使用的JavaScript业务逻辑

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原创
2025-02-17 11:40:09224浏览

Write Reusable JavaScript Business Logic with peasy-js

Peasy-js: 构建可复用、可扩展、易于测试的业务逻辑

Peasy-js是一个中间层框架,它以可组合、可复用、可扩展和易于测试的方式构建业务逻辑,从而轻松地在应用程序中替换UI、后端和数据访问框架。 它促进业务逻辑的分离,使其易于测试、替换、重排、复用,并可在任何应用程序架构中使用,兼容各种JavaScript客户端、服务器、数据访问技术和框架。

Peasy-js的核心概念包括:BusinessService、Command、Rule和DataProxy。这些概念在业务逻辑编排、数据验证以及数据存储和检索中发挥着关键作用。 通过Peasy-js,开发者可以编写一次代码并在多个项目中重复使用,从而节省时间和精力。 它支持多种客户端框架,并内置数据验证和测试功能,确保数据完整性和代码可靠性。

本文由Stephan Max同行评审。感谢所有SitePoint的同行评审员,使SitePoint的内容达到最佳状态!

Write Reusable JavaScript Business Logic with peasy-js

摆脱框架依赖,而非摒弃框架

我们不应摒弃框架,因为它们在客户端和服务器端都提供了巨大的优势。 Peasy-js 的目标是将业务逻辑抽象成可组合的单元,创建完全独立于其使用者的代码。 通过组件化业务逻辑,我们可以轻松地测试、替换、重排、复用这些组件,并在任何应用程序架构中使用,兼容任何可以想象的JavaScript客户端、服务器、数据访问技术和框架。

业务逻辑分离

Peasy-js是一个中间层框架,通过创建可组合、可复用、可扩展和易于测试的业务逻辑,可以轻松地替换应用程序中的UI、后端和数据访问框架。 换句话说,Peasy-js指导我们通过编写符合关注点分离 (SoC) 原则的代码,将业务逻辑抽象成可组合的单元。

框架疲劳?

我知道你在想什么:“又一个框架?”。是的,Peasy-js确实是一个微型框架。但是,如果我们着手组件化业务逻辑,最终很可能会自己编写一个微型框架。 Peasy-js 投入了大量时间进行设计、开发和测试,支持几乎所有可以想象的工作流程。 学习成本低,我相信您会发现学习它非常值得。

如果您发现Peasy-js不适合您,希望您能从框架中的一些模式中获得一些关于如何实现自己的业务层的见解。

核心概念

Peasy-js包含四个主要概念:

  • 易于使用且灵活的业务和验证规则引擎
  • 可扩展性和可复用性(将业务和验证逻辑与使用代码和框架解耦)
  • 易于测试性

以下是这四个核心概念的详细说明:

  • BusinessService: 表示一个实体(例如用户或项目),并负责通过命令公开业务功能。这些命令封装了CRUD和其他业务相关功能。
  • Command: 负责协调初始化逻辑、验证和业务规则执行以及其他逻辑(数据代理调用、工作流逻辑等)的执行,分别通过命令执行管道进行。
  • Rule: 可以创建规则来表示验证规则(字段长度或必填)或业务规则(授权、价格有效性等)。规则由命令使用,可以进行链式调用,根据先前规则的执行结果进行配置等。规则还可以配置为根据其执行结果运行代码。
  • DataProxy: 负责数据存储和检索,并作为数据存储的抽象层,涵盖(但不限于)以下内容:关系数据库、文档(NoSQL)数据库、服务、缓存存储、队列、文件系统以及用于测试的内存数据存储。

Peasy-js示例

(注意:可以在plnkr上查看一个简单的浏览器示例,其中涵盖了本节中讨论的所有内容。)

以下是如何在客户端的Angular服务中使用Peasy-js编写的业务逻辑的示例:

(图A)

<code class="language-javascript">var dataProxy = new CustomerHttpDataProxy();
var service = new CustomerService(dataProxy);
var customer = { name:  "Frank Zappa", birthDate: new Date('12/21/1940') };
var command = service.insertCommand(customer);

command.execute(function(err, result) {
  if (result.success) {
    customer = result.value;
  } else {
    console.log(result.errors);
  }
});</code>

以下是如何在服务器端的Express.js控制器中使用相同业务逻辑的示例:

(图B)

<code class="language-javascript">var dataProxy = new CustomerMongoDataProxy();
var service = new CustomerService(dataProxy);
var customer = { name:  "Frank Zappa", birthDate: new Date('12/21/1940') };
var command = service.insertCommand(customer);

command.execute(function(err, result) {
  if (result.success) {
    customer = result.value;
  } else {
    console.log(result.errors);
  }
});</code>

注意,除了在每个示例中注入到业务服务的不同的数据代理外,没有区别。

请记住,数据代理是我们的数据访问抽象,可以表示文件系统访问、数据库、队列、缓存、内存和HTTP通信的具体实现。 此抽象允许我们根据所需的系统架构和配置交换数据代理,同时强制执行SoC,并使其能够跨代码库重用,并促进更轻松的测试。 可能并不立即显而易见的是,这种方法始终使我们的有效负载服从相同的业务逻辑,而不管我们数据的来源或目的地如何。 这很快就会显现出来。

从消费的角度来看,这就是全部内容。 使用Peasy-js开发的业务逻辑的消费将引入一个可识别的主题,而不管我们的架构和使用它的技术如何。

说到架构,让我们将注意力转向以这种方式开发业务逻辑时很容易实现的潜在架构,同时更深入地探讨Peasy-js参与者:

Write Reusable JavaScript Business Logic with peasy-js

(CustomerHttpDataProxy, CustomerMongoDataProxy, CustomerService 等代码示例及测试示例,因篇幅限制,此处省略。原文中已提供完整代码。)

总结

Peasy-js鼓励我们编写与使用的框架清晰分离的业务逻辑。 这带来的一个好处是,它可以轻松地以多种方式部署我们的代码。 最后,它使迁移到或采用新的框架变得非常容易,因为我们当前的框架会随着时间的推移而老化。

(Frequently Asked Questions 部分,因篇幅限制,此处省略。原文中已提供完整FAQ。)

以上是用Peasy-JS编写可重复使用的JavaScript业务逻辑的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn