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

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)

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);
  }
});

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

(图B)

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);
  }
});

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

请记住,数据代理是我们的数据访问抽象,可以表示文件系统访问、数据库、队列、缓存、内存和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
Python vs. JavaScript:选择合适的工具Python vs. JavaScript:选择合适的工具May 08, 2025 am 12:10 AM

选择Python还是JavaScript取决于项目类型:1)数据科学和自动化任务选择Python;2)前端和全栈开发选择JavaScript。Python因其在数据处理和自动化方面的强大库而备受青睐,而JavaScript则因其在网页交互和全栈开发中的优势而不可或缺。

Python和JavaScript:了解每个的优势Python和JavaScript:了解每个的优势May 06, 2025 am 12:15 AM

Python和JavaScript各有优势,选择取决于项目需求和个人偏好。1.Python易学,语法简洁,适用于数据科学和后端开发,但执行速度较慢。2.JavaScript在前端开发中无处不在,异步编程能力强,Node.js使其适用于全栈开发,但语法可能复杂且易出错。

JavaScript的核心:它是在C还是C上构建的?JavaScript的核心:它是在C还是C上构建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; saninterpretedlanguagethatrunsonenginesoftenwritteninc.1)javascriptwasdesignedAsalightweight,解释edganguageforwebbrowsers.2)Enginesevolvedfromsimpleterterterpretpreterterterpretertestojitcompilerers,典型地提示。

JavaScript应用程序:从前端到后端JavaScript应用程序:从前端到后端May 04, 2025 am 12:12 AM

JavaScript可用于前端和后端开发。前端通过DOM操作增强用户体验,后端通过Node.js处理服务器任务。1.前端示例:改变网页文本内容。2.后端示例:创建Node.js服务器。

Python vs. JavaScript:您应该学到哪种语言?Python vs. JavaScript:您应该学到哪种语言?May 03, 2025 am 12:10 AM

选择Python还是JavaScript应基于职业发展、学习曲线和生态系统:1)职业发展:Python适合数据科学和后端开发,JavaScript适合前端和全栈开发。2)学习曲线:Python语法简洁,适合初学者;JavaScript语法灵活。3)生态系统:Python有丰富的科学计算库,JavaScript有强大的前端框架。

JavaScript框架:为现代网络开发提供动力JavaScript框架:为现代网络开发提供动力May 02, 2025 am 12:04 AM

JavaScript框架的强大之处在于简化开发、提升用户体验和应用性能。选择框架时应考虑:1.项目规模和复杂度,2.团队经验,3.生态系统和社区支持。

JavaScript,C和浏览器之间的关系JavaScript,C和浏览器之间的关系May 01, 2025 am 12:06 AM

引言我知道你可能会觉得奇怪,JavaScript、C 和浏览器之间到底有什么关系?它们之间看似毫无关联,但实际上,它们在现代网络开发中扮演着非常重要的角色。今天我们就来深入探讨一下这三者之间的紧密联系。通过这篇文章,你将了解到JavaScript如何在浏览器中运行,C 在浏览器引擎中的作用,以及它们如何共同推动网页的渲染和交互。JavaScript与浏览器的关系我们都知道,JavaScript是前端开发的核心语言,它直接在浏览器中运行,让网页变得生动有趣。你是否曾经想过,为什么JavaScr

node.js流带打字稿node.js流带打字稿Apr 30, 2025 am 08:22 AM

Node.js擅长于高效I/O,这在很大程度上要归功于流。 流媒体汇总处理数据,避免内存过载 - 大型文件,网络任务和实时应用程序的理想。将流与打字稿的类型安全结合起来创建POWE

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)