简介
Angular CQRS 是一个基于 Angular 框架和 Command-Query Responsibility Segregation (CQRS) 模式的库,可以帮助开发人员更轻松地实现 CQRS 架构。CQRS 是一种架构模式,它将应用程序分为两部分:命令和查询。命令是对应用程序状态进行更改的操作,查询是从应用程序状态中检索数据的操作。
安装
要使用 Angular CQRS,首先需要安装它。在终端中运行以下命令:
npm install angular-cqrs
使用
定义命令和查询
首先,你需要定义应用程序中使用的所有命令和查询。可以通过创建附加到 Angular CQRS 的 Commands 和 Queries 来实现。以下是定义一个简单增加计数器值的命令和一个返回计数器值的查询的示例:
-- -------------------- ---- ------- ------ - ------- - ---- --------------- ------ ----- ----------------------- ------- ------- - ------------------ -------- ------- ------- - -------- - - ------ - ----- - ---- --------------- ------ ----- --------------- ------- ----- - -
创建命令和查询处理程序
每个命令和查询都需要处理程序。这些处理程序包含用于执行业务逻辑的代码。要在 Angular CQRS 中创建命令和查询的处理程序,请按照以下步骤操作:
- 首先,在需要的模块中导入
CommandHandler
和QueryHandler
。 - 创建一个控制器类来实现处理程序。
- 在处理程序类中编写处理命令或查询的逻辑并导出其类。
以下是一个将增量命令应用于计数器的命令处理程序和返回计数器值的查询处理程序的示例:
-- -------------------- ---- ------- ------ - ---------- - ---- ---------------- ------ - --------------- --------------- - ---- --------------- ------ - -------------- - ---- -------------------------------- ------ - ----------------------- - ---- ------------------------------------------ ------------- ------ ----- ------------------------------ ---------- ---------------------------------------- - ------------------- --------------- --------------- -- --------------- ------------------------- ---- - ----------------------------------------------------- - - ------ - ---------- - ---- ---------------- ------ - -------------- ------------ - ---- --------------- ------ - -------------- - ---- -------------------------------- ------ - --------------- - ---- --------------------------------- ------------- ------ ----- ---------------------- ---------- ------------------------------ - ------------------- --------------- --------------- -- ------------- ----------------- ------ - ------ -------------------------------------- - -
将命令和查询绑定
通过将每个命令和查询与其处理程序绑定,Angular CQRS 可以识别命令和查询并将其路由到正确的处理程序。要将命令和查询与其处理程序绑定,请执行以下步骤:
- 创建一个附加到
CommandMapping
和QueryMapping
的清单类。 - 在清单类中使用
register
方法将每个命令和查询与其处理程序绑定。 - 在应用程序启动时,将清单类提供给
CommandBusService
和QueryBusService
。
以下是一个将命令和查询与其处理程序绑定的示例:
-- -------------------- ---- ------- ------ - ---------- - ---- ---------------- ------ - --------------- ------------ - ---- --------------- ------ - ----------------------- - ---- --------------------------------------- ------ - --------------- - ---- ------------------------------ ------ - ------------------------------ - ---- ------------------------------------------------------- ------ - ---------------------- - ---- --------------------------------------------- ------------- ------ ----- ------------ - -------------------------- ---------------- ---- - ------------------------------------------ -------------------------------- - ------------------------ -------------- ---- - --------------------------------- ------------------------ - -
在组件中使用命令和查询
现在,命令和查询已经定义,并且命令和查询处理程序已经创建和绑定。要在组件中使用它们,请按照以下步骤操作:
- 注入
CommandBusService
和QueryBusService
。 - 创建一个方法,该方法使用
CommandBusService
或QueryBusService
向 CommandBus 或 QueryBus 发送命令或查询。 - 在该组件模板中绑定调用该方法的按钮或其他事件。
以下是实现的示例:
-- -------------------- ---- ------- ------ - --------- - ---- ---------------- ------ - ----------------- - ---- -------------------------------- ------ - --------------- - ---- ------------------------------ ------ - ----------------------- - ---- ----------------------------------------------- ------ - --------------- - ---- -------------------------------------- ------------ --------- ----------- ------------ ----------------------- ---------- ----------------------- -- ------ ----- ------------ - ------------- ------- ------------ ------- ----------- ------------------ ------- --------- --------------- - -- ----------------------- -------- ---- - ------------------------ -------------------------------- - ------------------ ---- - ---------------------- ------------------ ------------------ ------- -- ----------------- - ------- - -
示例应用程序
为了更好地演示如何使用 Angular CQRS,我创建了一个简单的示例应用程序。你可以在 GitHub 上找到此应用程序:https://github.com/bryaneaton13/angular-cqrs-demo
结论
使用 Angular CQRS,你可以实现清晰的命令和查询分离,并将处理程序的所有逻辑集中在一起,从而有效地管理应用程序中的业务逻辑。通过按照上述步骤,你可以更轻松地使用 Angular CQRS,为你的应用程序实现 CQRS 架构。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056be481e8991b448e59b2