2016-10-05 57 views
2

最近我一直在阅读域驱动设计,但我很少在Web应用程序中看到它(或者我可能没有Google它),我想我们现在有足够的复杂性来处理web应用程序。前端域模型

我需要一种方法来保持我的模型和业务逻辑清洁,最少耦合以及框架/库不可知。例如,今天我使用AngularJS,明天我可以将UI切换到ReactJS。

说了我想用一个简单的例子来学习这个。假设我想,具有以下特点创建报价申请:

给出一个报价

  1. 可以upvoted/downvoted。
  2. 可以加星标。
  3. 可以由用户创建(进入评论队列)。
  4. 用户可以通过(Twitter,Facebook等)分享它。

给定一个用户

当未登录:

  • 可以看到随机问询。
  • 可以upvote/downvote报价。
  • 可以按标题或作者查询报价。
  • 当登录:

    1. 可以创建一个报价。
    2. 可以为一个报价。

    我感兴趣的是如何在保持UI和业务逻辑清洁和分离的情况下实现上述要求。

    我不是专家,但目前我可以提出这些未来可能会改变的要求。

    +1

    与Redux(和Elm本身)的反应实现了事件采购的范式,并将呈现和“逻辑”清晰地分离开来,并以不可变的存储结束“左侧”样式状态更新它。 –

    +0

    对于业务线应用程序,我倾向于拥有服务器上的所有逻辑和非常愚蠢的客户端。我在客户端拥有业务逻辑的唯一原因是为了提高性能和用户体验,但最终你不能相信UI的状态,所以必须在服务器上复制所有的逻辑。我在客户端中最复杂的逻辑是视图逻辑。如果我发现业务逻辑正悄悄进入客户端,我确信这些数据可以从服务器返回的负载中获得。你在客户中有什么样的业务逻辑? – plalx

    +0

    顺便说一句,对于单页应用程序中的数据同步,我只听来自服务器的事件流并重新发出受影响的查询。因此,保持状态保持最新状态的逻辑很少。如果你能负担得起的性能,那么这是一个好方法。 – plalx

    回答

    0

    您应该在前端和后端(服务器端)实现MVC模式。为了清晰地分离责任和团队资源/专业知识(API开发人员,UI开发人员),您可以通过REST API和使用各种客户端技术(例如angular,cordova,react等)的UI开发来展示业务逻辑。

    UI开发人员应该能够在没有API的情况下独立开发。他们将不得不创建自己的模型,视图和控制器(MVC)。同样,API开发人员应该能够开发业务领域并展示业务所需的必要操作(例如CRUD)或无处不在的语言。 API层将拥有自己的模型,视图和控制器。