搜尋
首頁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 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

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)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

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

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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具