9

Remesh:用于大型复杂JavaScript应用的DDD框架

 2 years ago
source link: https://www.jdon.com/61730
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Remesh:用于大型复杂JavaScript应用的DDD框架
领域就像您的应用程序的一个组件。但不是针对 UI,而是针对您的业务逻辑。
所有相关的东西都封装在域中。
一个域可以拥有下面列出的任意数量的资源。

  • 域状态:您要存储在域中的状态。
  • 域实体:要存储在域中的实体。实体必须具有唯一标识符作为键。
  • 领域事件:识别领域中发生的事情。
  • 域命令:更新状态/实体或发出事件或什么都不做。
  • 域查询:查询状态/实体或派生另一个查询。
  • Domain Effects : 执行副作用并发送命令或事件的 observable。

对于任何域,只有domain-query, domain-command,domain-event可以暴露给外部。
domain-state并且domain-entity不暴露在外面,也不能在域外直接触摸。
对于任何域的消费者。

  • 读取状态或实体的唯一方法是通过domain-query防止无效读取。
  • 更新状态或实体的唯一方法是通过domain-command防止无效更新。

特征

  • DDD 原则
  • CQRS 架构
  • 事件驱动架构
  • 反应式编程
  • 不可变状态
  • 类型友好的 API
  • 框架无关(React/Vue 官方支持)
  • SSR 支持

Remesh 支持一种类似于 react-hooks 的机制,用于在域之间重用难以通过类归档的逻辑。
Entity的概念在Remesh中有着自己的意义,它是在Remesh世界的有界上下文中。所以没有聚合根和ValueObject。
Remesh 中的战术 DDD实现不是使用OOP,而是使用函数式编程凡是。

作者的话:
DDD实践可以分为两部分,一是知识获取,一是代码实现。
知识获取部分,独立于代码实现,关系到开发者与领域专家的密切沟通与协作。
另一方面,代码实现部分需要准确反映领域知识或领域规则。这不是随机编写的代码可以满足的要求。我们所谓的DDD框架,就是为了帮助开发者更好的达到将领域规则与代码拟合的目的。
当我们说 DDD 框架时,它是一个编程领域概念,服务于 DDD 实践的代码实现部分。
至于 Remesh 如何在前端开发中服务于上述目的,请尝试使用 Remesh 开发您的前端应用程序,最好具有足够的复杂性,以能够证明使用 DDD 思想管理复杂性的目的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK